diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-01-30 01:30:58 +0100 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-01-30 01:30:58 +0100 |
| commit | bda1e81c87a34bc0e6d2ce805f706a726087e957 (patch) | |
| tree | 124ebf09d1289900e0d67d8723528b96bfbb6a7e /src/server/Api/Internal/Account/GetProfileDataRoute.cs | |
| parent | 253c8479b9ae0ba6853a70728d3f6e904e1ac2ba (diff) | |
| download | bookmark-thing-bda1e81c87a34bc0e6d2ce805f706a726087e957.tar.xz bookmark-thing-bda1e81c87a34bc0e6d2ce805f706a726087e957.zip | |
feat: WIP: Map github logins
When github is used for login, we want to create
a mapping to a regular user in our database.
This is mainly so that we don't have to change the PK in our database or add a column to it.
Diffstat (limited to 'src/server/Api/Internal/Account/GetProfileDataRoute.cs')
| -rw-r--r-- | src/server/Api/Internal/Account/GetProfileDataRoute.cs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/server/Api/Internal/Account/GetProfileDataRoute.cs b/src/server/Api/Internal/Account/GetProfileDataRoute.cs index adf1cba..c68f295 100644 --- a/src/server/Api/Internal/Account/GetProfileDataRoute.cs +++ b/src/server/Api/Internal/Account/GetProfileDataRoute.cs @@ -2,10 +2,45 @@ namespace IOL.BookmarkThing.Server.Api.Internal.Account; public class GetProfileDataRoute : RouteBaseInternalSync.WithoutRequest.WithActionResult<LoggedInInternalUser> { + private readonly AppDbContext _context; + private readonly ILogger<GetProfileDataRoute> _logger; + + public GetProfileDataRoute(ILogger<GetProfileDataRoute> logger, AppDbContext context) { + _logger = logger; + _context = context; + } + [ApiVersionNeutral] [ApiExplorerSettings(IgnoreApi = true)] [HttpGet("~/v{version:apiVersion}/account/profile-data")] public override ActionResult<LoggedInInternalUser> Handle() { + // if (!Guid.TryParse(User.FindFirstValue(ClaimTypes.NameIdentifier), out var _)) { + // var github_id = User.FindFirstValue(AppClaims.GITHUB_ID); + // if (github_id.HasValue()) { + // var existing_mapping = _context.GithubUserMappings.Include(c => c.User).SingleOrDefault(c => c.GithubId == github_id); + // var id = new ClaimsIdentity(); + // if (existing_mapping != default) { + // id.AddClaims(existing_mapping.User.DefaultClaims()); + // User.AddIdentity(id); + // } else { + // var name = User.FindFirstValue(ClaimTypes.Name); + // var user = new User(name) { + // Id = Guid.NewGuid() + // }; + // var mapping = new GithubUserMapping { + // GithubId = github_id, + // User = user + // }; + // _context.GithubUserMappings.Add(mapping); + // _context.SaveChanges(); + // id.AddClaims(mapping.User.DefaultClaims()); + // User.AddIdentity(id); + // } + // + // _logger.LogInformation("Added user mapping for github user"); + // } + // } + return Ok(LoggedInUser); } } |
