implement Clean Architecture and user authentication

- Add LoopFit.Domain with entities (ApplicationUser, Workout, CalorieEntry, VitalData), enums (WorkoutType), and interfaces (IJwtTokenGenerator, IUserRepository, IWorkoutRepository)
- Add LoopFit.Application with auth DTOs, service interfaces, and DI setup
- Add LoopFit.Infrastructure with EF Core DbContext (PostgreSQL), ASP.NET Core Identity, JWT token generation, and repository implementations
- Add AuthController with register/login/me endpoints and JWT Bearer auth
- Add MAUI auth services (AuthService, TokenStorageService) and Login/Register Blazor pages
This commit is contained in:
2026-08-26 00:50:02 +02:00
parent ada55d4d92
commit b12e557e1a
69 changed files with 1253 additions and 146 deletions
+38
View File
@@ -1,3 +1,41 @@
html, body {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
a, .btn-link {
color: #006bb7;
}
.btn-primary {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}
.content {
padding-top: 1.1rem;
}
h1:focus {
outline: none;
}
.valid.modified:not([type=checkbox]) {
outline: 1px solid #26b050;
}
.invalid {
outline: 1px solid #e50000;
}
.validation-message {
color: #e50000;
}
.status-bar-safe-area {
display: none;
}
+2 -3
View File
@@ -5,8 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" />
<title>LoopFit</title>
<base href="/" />
<link rel="stylesheet" href="_content/LoopFit.Shared/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="_content/LoopFit.Shared/app.css" />
<link rel="stylesheet" href="lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="app.css" />
<link rel="stylesheet" href="LoopFit.styles.css" />
<link rel="icon" href="data:,">
@@ -22,4 +21,4 @@
</body>
</html>
</html>
File diff suppressed because one or more lines are too long