From bda1e81c87a34bc0e6d2ce805f706a726087e957 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Sun, 30 Jan 2022 01:30:58 +0100 Subject: 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. --- src/server/Models/Database/AppDbContext.cs | 5 +++++ src/server/Models/Database/GithubUserMapping.cs | 7 +++++++ src/server/Models/Database/User.cs | 10 +++++----- 3 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 src/server/Models/Database/GithubUserMapping.cs (limited to 'src/server/Models/Database') diff --git a/src/server/Models/Database/AppDbContext.cs b/src/server/Models/Database/AppDbContext.cs index ae1f45b..4961f0e 100644 --- a/src/server/Models/Database/AppDbContext.cs +++ b/src/server/Models/Database/AppDbContext.cs @@ -6,6 +6,7 @@ public class AppDbContext : DbContext public DbSet Users { get; set; } public DbSet Entries { get; set; } public DbSet AccessTokens { get; set; } + public DbSet GithubUserMappings { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity(e => { @@ -20,6 +21,10 @@ public class AppDbContext : DbContext e.ToTable("access_tokens"); }); + modelBuilder.Entity(e => { + e.ToTable("github_user_mappings"); + }); + base.OnModelCreating(modelBuilder); } } diff --git a/src/server/Models/Database/GithubUserMapping.cs b/src/server/Models/Database/GithubUserMapping.cs new file mode 100644 index 0000000..440360d --- /dev/null +++ b/src/server/Models/Database/GithubUserMapping.cs @@ -0,0 +1,7 @@ +namespace IOL.BookmarkThing.Server.Models.Database; + +public class GithubUserMapping : Base +{ + public User User { get; set; } + public string GithubId { get; set; } +} diff --git a/src/server/Models/Database/User.cs b/src/server/Models/Database/User.cs index 1215f4e..e034665 100644 --- a/src/server/Models/Database/User.cs +++ b/src/server/Models/Database/User.cs @@ -2,10 +2,10 @@ namespace IOL.BookmarkThing.Server.Models.Database; public class User : Base { - public User(string username) => Username = username; + public User(string username = "") => Username = username; - public string Username { get; set; } - public string Password { get; set; } + public string Username { get; } + public string Password { get; private set; } public void HashAndSetPassword(string password) { Password = PasswordHelper.HashPassword(password); @@ -17,8 +17,8 @@ public class User : Base public IEnumerable DefaultClaims() { return new Claim[] { - new(ClaimTypes.NameIdentifier, Id.ToString()), - new(ClaimTypes.Name, Username), + new(AppClaims.USER_ID, Id.ToString()), + new(AppClaims.NAME, Username), }; } } -- cgit v1.3