diff --git a/src/Controllers/Common/AuthenticationController.cs b/src/Controllers/Common/AuthenticationController.cs index 494e7e2..3ee0896 100644 --- a/src/Controllers/Common/AuthenticationController.cs +++ b/src/Controllers/Common/AuthenticationController.cs @@ -223,7 +223,9 @@ public class AuthenticationController : Controller { if (session != null) { info.Authenticated = true; info.DisplayName = session.Viking.Name; - info.Role = Role.User; + Role? role = session.Viking.MMORoles.FirstOrDefault()?.Role; + if (role != null) + info.Role = (Role)role; } return Ok(info); } diff --git a/src/Model/DBContext.cs b/src/Model/DBContext.cs index c05d864..089c9b7 100644 --- a/src/Model/DBContext.cs +++ b/src/Model/DBContext.cs @@ -21,6 +21,7 @@ public class DBContext : DbContext { public DbSet GameDataPairs { get; set; } = null!; public DbSet AchievementPoints { get; set; } = null!; public DbSet ProfileAnswers { get; set; } = null!; + public DbSet MMORoles { get; set; } = null!; public DbSet Parties { get; set; } = null!; private readonly IOptions config; @@ -126,6 +127,9 @@ public class DBContext : DbContext { builder.Entity().HasMany(v => v.Parties) .WithOne(e => e.Viking); + builder.Entity().HasMany(v => v.MMORoles) + .WithOne(e => e.Viking); + // Dragons builder.Entity().HasOne(d => d.Viking) .WithMany(e => e.Dragons) @@ -232,5 +236,10 @@ public class DBContext : DbContext { builder.Entity().HasOne(i => i.Viking) .WithMany(i => i.SceneData) .HasForeignKey(e => e.VikingId); + + // MMO Roles + builder.Entity().HasOne(r => r.Viking) + .WithMany(e => e.MMORoles) + .HasForeignKey(e => e.VikingId); } } diff --git a/src/Model/MMORole.cs b/src/Model/MMORole.cs new file mode 100644 index 0000000..8f97762 --- /dev/null +++ b/src/Model/MMORole.cs @@ -0,0 +1,15 @@ +using sodoff.Schema; +using System.ComponentModel.DataAnnotations; + +namespace sodoff.Model; + +public class MMORole { + [Key] + public int Id { get; set; } + + public int VikingId { get; set; } + + public Role Role { get; set; } + + public virtual Viking? Viking { get; set; } +} diff --git a/src/Model/Viking.cs b/src/Model/Viking.cs index 5aee21a..8777b75 100644 --- a/src/Model/Viking.cs +++ b/src/Model/Viking.cs @@ -36,6 +36,7 @@ public class Viking { public virtual ICollection ProfileAnswers { get; set; } = null!; public virtual ICollection SavedData { get; set; } = null!; public virtual ICollection Parties { get; set; } = null!; + public virtual ICollection MMORoles { get; set; } = null!; public virtual Dragon? SelectedDragon { get; set; } public DateTime? CreationDate { get; set; } diff --git a/src/Schema/AuthenticationInfo.cs b/src/Schema/AuthenticationInfo.cs index 876b3a4..1090667 100644 --- a/src/Schema/AuthenticationInfo.cs +++ b/src/Schema/AuthenticationInfo.cs @@ -15,5 +15,5 @@ public class AuthenticationInfo { [Serializable] public enum Role { - User, Admin, Moderator + User = 0, Admin = 1, Moderator = 2 }