From 6c3523b21e638c4b3fbcc865a3e59b578e8b5e32 Mon Sep 17 00:00:00 2001 From: "Jamie.Rees" Date: Wed, 19 Jul 2017 08:22:15 +0100 Subject: [PATCH] Fixed build #1456 Fixed the issue where we were not validting the correct token when resetting the password #865 Removed the old user (Well commented it out for now) --- src/Ombi.Core/Engine/MovieRequestEngine.cs | 8 +- src/Ombi.Core/Engine/TvRequestEngine.cs | 8 +- src/Ombi.Core/Helpers/TvShowRequestBuilder.cs | 2 +- src/Ombi.DependencyInjection/IocExtensions.cs | 5 +- src/Ombi.Mapping/Profiles/OmbiProfile.cs | 2 +- .../NotificationMessageCurlys.cs | 4 +- src/Ombi.Store/Context/IOmbiContext.cs | 3 +- src/Ombi.Store/Context/OmbiContext.cs | 14 +- src/Ombi.Store/Entities/EmailTokens.cs | 18 --- .../Entities/Requests/BaseRequest.cs | 4 +- src/Ombi.Store/Entities/User.cs | 34 ++-- ....cs => 20170719072204_Initial.Designer.cs} | 70 +------- ...9_Initial.cs => 20170719072204_Initial.cs} | 151 ++++++------------ .../Migrations/OmbiContextModelSnapshot.cs | 68 +------- src/Ombi.Store/Repository/ITokenRepository.cs | 10 +- src/Ombi.Store/Repository/IUserRepository.cs | 18 +-- src/Ombi.Store/Repository/TokenRepository.cs | 36 ++--- src/Ombi.Store/Repository/UserRepository.cs | 84 +++++----- src/Ombi/Controllers/IdentityController.cs | 2 +- src/Ombi/Startup.cs | 5 +- 20 files changed, 179 insertions(+), 367 deletions(-) delete mode 100644 src/Ombi.Store/Entities/EmailTokens.cs rename src/Ombi.Store/Migrations/{20170712080109_Initial.Designer.cs => 20170719072204_Initial.Designer.cs} (89%) rename src/Ombi.Store/Migrations/{20170712080109_Initial.cs => 20170719072204_Initial.cs} (89%) diff --git a/src/Ombi.Core/Engine/MovieRequestEngine.cs b/src/Ombi.Core/Engine/MovieRequestEngine.cs index 4ea334571..609559564 100644 --- a/src/Ombi.Core/Engine/MovieRequestEngine.cs +++ b/src/Ombi.Core/Engine/MovieRequestEngine.cs @@ -7,8 +7,10 @@ using System; using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Security.Claims; using System.Security.Principal; using System.Threading.Tasks; +using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Ombi.Core.Engine.Interfaces; @@ -21,7 +23,7 @@ namespace Ombi.Core.Engine public class MovieRequestEngine : BaseMediaEngine, IMovieRequestEngine { public MovieRequestEngine(IMovieDbApi movieApi, IRequestServiceMain requestService, IPrincipal user, - INotificationHelper helper, IRuleEvaluator r, IMovieSender sender, ILogger log, IUserIdentityManager manager) : base(user, requestService, r) + INotificationHelper helper, IRuleEvaluator r, IMovieSender sender, ILogger log, UserManager manager) : base(user, requestService, r) { MovieApi = movieApi; NotificationHelper = helper; @@ -34,7 +36,7 @@ namespace Ombi.Core.Engine private INotificationHelper NotificationHelper { get; } private IMovieSender Sender { get; } private ILogger Logger { get; } - private IUserIdentityManager UserManager { get; } + private UserManager UserManager { get; } /// /// Requests the movie. @@ -56,7 +58,7 @@ namespace Ombi.Core.Engine var fullMovieName = $"{movieInfo.Title}{(!string.IsNullOrEmpty(movieInfo.ReleaseDate) ? $" ({DateTime.Parse(movieInfo.ReleaseDate).Year})" : string.Empty)}"; - var userDetails = await UserManager.GetUser(User.Identity.Name); + var userDetails = await UserManager.GetUserAsync(new ClaimsPrincipal(User)); var requestModel = new MovieRequests { diff --git a/src/Ombi.Core/Engine/TvRequestEngine.cs b/src/Ombi.Core/Engine/TvRequestEngine.cs index b79b65cfc..251493174 100644 --- a/src/Ombi.Core/Engine/TvRequestEngine.cs +++ b/src/Ombi.Core/Engine/TvRequestEngine.cs @@ -8,8 +8,10 @@ using System; using System.Collections.Generic; using System.Globalization; using System.Linq; +using System.Security.Claims; using System.Security.Principal; using System.Threading.Tasks; +using Microsoft.AspNetCore.Identity; using Microsoft.EntityFrameworkCore; using Ombi.Core.Engine.Interfaces; using Ombi.Core.Helpers; @@ -25,7 +27,7 @@ namespace Ombi.Core.Engine { public TvRequestEngine(ITvMazeApi tvApi, IRequestServiceMain requestService, IPrincipal user, INotificationHelper helper, IMapper map, - IRuleEvaluator rule, IUserIdentityManager manager, + IRuleEvaluator rule, UserManager manager, ITvSender sender) : base(user, requestService, rule) { TvApi = tvApi; @@ -38,12 +40,12 @@ namespace Ombi.Core.Engine private INotificationHelper NotificationHelper { get; } private ITvMazeApi TvApi { get; } private IMapper Mapper { get; } - private IUserIdentityManager UserManager { get; } + private UserManager UserManager { get; } private ITvSender TvSender {get;} public async Task RequestTvShow(SearchTvShowViewModel tv) { - var user = await UserManager.GetUser(User.Identity.Name); + var user = await UserManager.GetUserAsync(new ClaimsPrincipal(User)); var tvBuilder = new TvShowRequestBuilder(TvApi); (await tvBuilder diff --git a/src/Ombi.Core/Helpers/TvShowRequestBuilder.cs b/src/Ombi.Core/Helpers/TvShowRequestBuilder.cs index 3f28d6ff2..3dfe3a097 100644 --- a/src/Ombi.Core/Helpers/TvShowRequestBuilder.cs +++ b/src/Ombi.Core/Helpers/TvShowRequestBuilder.cs @@ -43,7 +43,7 @@ namespace Ombi.Core.Helpers return this; } - public TvShowRequestBuilder CreateChild(SearchTvShowViewModel model, int userId) + public TvShowRequestBuilder CreateChild(SearchTvShowViewModel model, string userId) { ChildRequest = new ChildRequests { diff --git a/src/Ombi.DependencyInjection/IocExtensions.cs b/src/Ombi.DependencyInjection/IocExtensions.cs index 2e8ce9e0d..a9c36dec7 100644 --- a/src/Ombi.DependencyInjection/IocExtensions.cs +++ b/src/Ombi.DependencyInjection/IocExtensions.cs @@ -76,14 +76,14 @@ namespace Ombi.DependencyInjection services.AddScoped(); services.AddTransient(); - services.AddTransient(); + //services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + //services.AddTransient(); services.AddTransient(typeof(ISettingsService<>), typeof(SettingsService<>)); } public static void RegisterServices(this IServiceCollection services) @@ -107,7 +107,6 @@ namespace Ombi.DependencyInjection public static void RegisterIdentity(this IServiceCollection services) { - services.AddTransient(); services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() diff --git a/src/Ombi.Mapping/Profiles/OmbiProfile.cs b/src/Ombi.Mapping/Profiles/OmbiProfile.cs index 8bd03121e..3cc622054 100644 --- a/src/Ombi.Mapping/Profiles/OmbiProfile.cs +++ b/src/Ombi.Mapping/Profiles/OmbiProfile.cs @@ -13,7 +13,7 @@ namespace Ombi.Mapping.Profiles { public OmbiProfile() { - CreateMap().ReverseMap(); + //CreateMap().ReverseMap(); CreateMap().ConvertUsing(); diff --git a/src/Ombi.Notifications/NotificationMessageCurlys.cs b/src/Ombi.Notifications/NotificationMessageCurlys.cs index d41036e81..5e26d503e 100644 --- a/src/Ombi.Notifications/NotificationMessageCurlys.cs +++ b/src/Ombi.Notifications/NotificationMessageCurlys.cs @@ -10,7 +10,7 @@ namespace Ombi.Notifications public void Setup(FullBaseRequest req) { RequestedUser = string.IsNullOrEmpty(req.RequestedUser.Alias) - ? req.RequestedUser.Username + ? req.RequestedUser.UserName : req.RequestedUser.Alias; Title = req.Title; RequestedDate = req.RequestedDate.ToString("D"); @@ -23,7 +23,7 @@ namespace Ombi.Notifications public void Setup(ChildRequests req) { RequestedUser = string.IsNullOrEmpty(req.RequestedUser.Alias) - ? req.RequestedUser.Username + ? req.RequestedUser.UserName : req.RequestedUser.Alias; Title = req.ParentRequest.Title; RequestedDate = req.RequestedDate.ToString("D"); diff --git a/src/Ombi.Store/Context/IOmbiContext.cs b/src/Ombi.Store/Context/IOmbiContext.cs index 4d71fcaa3..57321ea6d 100644 --- a/src/Ombi.Store/Context/IOmbiContext.cs +++ b/src/Ombi.Store/Context/IOmbiContext.cs @@ -17,17 +17,16 @@ namespace Ombi.Store.Context DbSet PlexContent { get; set; } DbSet RadarrCache { get; set; } DatabaseFacade Database { get; } - DbSet OldUsers { get; set; } EntityEntry Entry(T entry) where T : class; EntityEntry Attach(TEntity entity) where TEntity : class; DbSet Set() where TEntity : class; DbSet NotificationTemplates { get; set; } + void Seed(); DbSet MovieRequests { get; set; } DbSet TvRequests { get; set; } DbSet ChildRequests { get; set; } DbSet MovieIssues { get; set; } DbSet TvIssues { get; set; } - DbSet EmailTokens { get; set; } } } \ No newline at end of file diff --git a/src/Ombi.Store/Context/OmbiContext.cs b/src/Ombi.Store/Context/OmbiContext.cs index d48d6a5b9..e86b77be3 100644 --- a/src/Ombi.Store/Context/OmbiContext.cs +++ b/src/Ombi.Store/Context/OmbiContext.cs @@ -19,28 +19,20 @@ namespace Ombi.Store.Context Database.Migrate(); // Add the notifcation templates - AddAllTemplates(); - + } + public DbSet NotificationTemplates { get; set; } public DbSet Settings { get; set; } - public DbSet OldUsers { get; set; } public DbSet PlexContent { get; set; } public DbSet RadarrCache { get; set; } - public DbSet NotificationTemplates { get; set; } public DbSet MovieRequests { get; set; } public DbSet TvRequests { get; set; } public DbSet ChildRequests { get; set; } public DbSet MovieIssues { get; set; } public DbSet TvIssues { get; set; } - public DbSet EmailTokens { get; set; } - - protected override void OnModelCreating(ModelBuilder builder) - { - base.OnModelCreating(builder); - } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { @@ -48,7 +40,7 @@ namespace Ombi.Store.Context } - private void AddAllTemplates() + public void Seed() { // Check if templates exist var templates = NotificationTemplates.ToList(); diff --git a/src/Ombi.Store/Entities/EmailTokens.cs b/src/Ombi.Store/Entities/EmailTokens.cs deleted file mode 100644 index 3412e376c..000000000 --- a/src/Ombi.Store/Entities/EmailTokens.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; -using System.ComponentModel.DataAnnotations.Schema; - -namespace Ombi.Store.Entities -{ - [Table("EmailTokens")] - public class EmailTokens : Entity - { - public Guid Token { get; set; } - public int UserId { get; set; } - public DateTime ValidUntil { get; set; } - public bool Used { get; set; } - public DateTime DateUsed { get; set; } - - [ForeignKey(nameof(UserId))] - public User User { get; set; } - } -} diff --git a/src/Ombi.Store/Entities/Requests/BaseRequest.cs b/src/Ombi.Store/Entities/Requests/BaseRequest.cs index 6f46820f1..95395d0bf 100644 --- a/src/Ombi.Store/Entities/Requests/BaseRequest.cs +++ b/src/Ombi.Store/Entities/Requests/BaseRequest.cs @@ -10,13 +10,13 @@ namespace Ombi.Store.Entities.Requests public bool Approved { get; set; } public DateTime RequestedDate { get; set; } public bool Available { get; set; } - public int RequestedUserId { get; set; } + public string RequestedUserId { get; set; } public bool? Denied { get; set; } public string DeniedReason { get; set; } public RequestType RequestType { get; set; } [ForeignKey(nameof(RequestedUserId))] - public User RequestedUser { get; set; } + public OmbiUser RequestedUser { get; set; } [NotMapped] diff --git a/src/Ombi.Store/Entities/User.cs b/src/Ombi.Store/Entities/User.cs index 94d215202..6b3805db9 100644 --- a/src/Ombi.Store/Entities/User.cs +++ b/src/Ombi.Store/Entities/User.cs @@ -34,25 +34,25 @@ using Ombi.Helpers; namespace Ombi.Store.Entities { - public class User : Entity - { - public string Username { get; set; } - public string Alias { get; set; } - public string ClaimsSerialized { get; set; } - public string EmailAddress { get; set; } - public string Password { get; set; } - public byte[] Salt { get; set; } - public UserType UserType { get; set; } + //public class User : Entity + //{ + // public string Username { get; set; } + // public string Alias { get; set; } + // public string ClaimsSerialized { get; set; } + // public string EmailAddress { get; set; } + // public string Password { get; set; } + // public byte[] Salt { get; set; } + // public UserType UserType { get; set; } - [NotMapped] - public string UserAlias => string.IsNullOrEmpty(Alias) ? Username : Alias; + // [NotMapped] + // public string UserAlias => string.IsNullOrEmpty(Alias) ? Username : Alias; - [NotMapped] - public List Claims { - get => JsonConvert.DeserializeObject>(ClaimsSerialized, new ClaimConverter()); - set => ClaimsSerialized = JsonConvert.SerializeObject(value, new ClaimConverter()); - } - } + // [NotMapped] + // public List Claims { + // get => JsonConvert.DeserializeObject>(ClaimsSerialized, new ClaimConverter()); + // set => ClaimsSerialized = JsonConvert.SerializeObject(value, new ClaimConverter()); + // } + //} public enum UserType { diff --git a/src/Ombi.Store/Migrations/20170712080109_Initial.Designer.cs b/src/Ombi.Store/Migrations/20170719072204_Initial.Designer.cs similarity index 89% rename from src/Ombi.Store/Migrations/20170712080109_Initial.Designer.cs rename to src/Ombi.Store/Migrations/20170719072204_Initial.Designer.cs index 020a66fdb..56974ca0e 100644 --- a/src/Ombi.Store/Migrations/20170712080109_Initial.Designer.cs +++ b/src/Ombi.Store/Migrations/20170719072204_Initial.Designer.cs @@ -10,7 +10,7 @@ using Ombi.Store.Entities; namespace Ombi.Store.Migrations { [DbContext(typeof(OmbiContext))] - [Migration("20170712080109_Initial")] + [Migration("20170719072204_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -125,28 +125,6 @@ namespace Ombi.Store.Migrations b.ToTable("AspNetUserTokens"); }); - modelBuilder.Entity("Ombi.Store.Entities.EmailTokens", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("DateUsed"); - - b.Property("Token"); - - b.Property("Used"); - - b.Property("UserId"); - - b.Property("ValidUntil"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("EmailTokens"); - }); - modelBuilder.Entity("Ombi.Store.Entities.GlobalSettings", b => { b.Property("Id") @@ -312,7 +290,7 @@ namespace Ombi.Store.Migrations b.Property("RequestedDate"); - b.Property("RequestedUserId"); + b.Property("RequestedUserId"); b.Property("Title"); @@ -374,7 +352,7 @@ namespace Ombi.Store.Migrations b.Property("RequestedDate"); - b.Property("RequestedUserId"); + b.Property("RequestedUserId"); b.Property("Status"); @@ -437,30 +415,6 @@ namespace Ombi.Store.Migrations b.ToTable("TvRequests"); }); - modelBuilder.Entity("Ombi.Store.Entities.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Alias"); - - b.Property("ClaimsSerialized"); - - b.Property("EmailAddress"); - - b.Property("Password"); - - b.Property("Salt"); - - b.Property("UserType"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.ToTable("OldUsers"); - }); - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => { b.Property("Id") @@ -542,14 +496,6 @@ namespace Ombi.Store.Migrations .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("Ombi.Store.Entities.EmailTokens", b => - { - b.HasOne("Ombi.Store.Entities.User", "User") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => { b.HasOne("Ombi.Store.Entities.PlexContent") @@ -565,10 +511,9 @@ namespace Ombi.Store.Migrations .HasForeignKey("ParentRequestId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("Ombi.Store.Entities.User", "RequestedUser") + b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") .WithMany() - .HasForeignKey("RequestedUserId") - .OnDelete(DeleteBehavior.Cascade); + .HasForeignKey("RequestedUserId"); }); modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => @@ -585,10 +530,9 @@ namespace Ombi.Store.Migrations modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => { - b.HasOne("Ombi.Store.Entities.User", "RequestedUser") + b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") .WithMany() - .HasForeignKey("RequestedUserId") - .OnDelete(DeleteBehavior.Cascade); + .HasForeignKey("RequestedUserId"); }); modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => diff --git a/src/Ombi.Store/Migrations/20170712080109_Initial.cs b/src/Ombi.Store/Migrations/20170719072204_Initial.cs similarity index 89% rename from src/Ombi.Store/Migrations/20170712080109_Initial.cs rename to src/Ombi.Store/Migrations/20170719072204_Initial.cs index 907e42e21..6c22a4584 100644 --- a/src/Ombi.Store/Migrations/20170712080109_Initial.cs +++ b/src/Ombi.Store/Migrations/20170719072204_Initial.cs @@ -146,25 +146,6 @@ namespace Ombi.Store.Migrations table.PrimaryKey("PK_TvRequests", x => x.Id); }); - migrationBuilder.CreateTable( - name: "OldUsers", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Alias = table.Column(nullable: true), - ClaimsSerialized = table.Column(nullable: true), - EmailAddress = table.Column(nullable: true), - Password = table.Column(nullable: true), - Salt = table.Column(nullable: true), - UserType = table.Column(nullable: false), - Username = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_OldUsers", x => x.Id); - }); - migrationBuilder.CreateTable( name: "AspNetRoleClaims", columns: table => new @@ -252,46 +233,56 @@ namespace Ombi.Store.Migrations }); migrationBuilder.CreateTable( - name: "PlexSeasonsContent", + name: "MovieRequests", columns: table => new { Id = table.Column(nullable: false) .Annotation("Sqlite:Autoincrement", true), - ParentKey = table.Column(nullable: false), - PlexContentId = table.Column(nullable: false), - SeasonKey = table.Column(nullable: false), - SeasonNumber = table.Column(nullable: false) + Approved = table.Column(nullable: false), + Available = table.Column(nullable: false), + Denied = table.Column(nullable: true), + DeniedReason = table.Column(nullable: true), + ImdbId = table.Column(nullable: true), + IssueId = table.Column(nullable: true), + Overview = table.Column(nullable: true), + PosterPath = table.Column(nullable: true), + ReleaseDate = table.Column(nullable: false), + RequestType = table.Column(nullable: false), + RequestedDate = table.Column(nullable: false), + RequestedUserId = table.Column(nullable: true), + Status = table.Column(nullable: true), + TheMovieDbId = table.Column(nullable: false), + Title = table.Column(nullable: true) }, constraints: table => { - table.PrimaryKey("PK_PlexSeasonsContent", x => x.Id); + table.PrimaryKey("PK_MovieRequests", x => x.Id); table.ForeignKey( - name: "FK_PlexSeasonsContent_PlexContent_PlexContentId", - column: x => x.PlexContentId, - principalTable: "PlexContent", + name: "FK_MovieRequests_AspNetUsers_RequestedUserId", + column: x => x.RequestedUserId, + principalTable: "AspNetUsers", principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( - name: "EmailTokens", + name: "PlexSeasonsContent", columns: table => new { Id = table.Column(nullable: false) .Annotation("Sqlite:Autoincrement", true), - DateUsed = table.Column(nullable: false), - Token = table.Column(nullable: false), - Used = table.Column(nullable: false), - UserId = table.Column(nullable: false), - ValidUntil = table.Column(nullable: false) + ParentKey = table.Column(nullable: false), + PlexContentId = table.Column(nullable: false), + SeasonKey = table.Column(nullable: false), + SeasonNumber = table.Column(nullable: false) }, constraints: table => { - table.PrimaryKey("PK_EmailTokens", x => x.Id); + table.PrimaryKey("PK_PlexSeasonsContent", x => x.Id); table.ForeignKey( - name: "FK_EmailTokens_OldUsers_UserId", - column: x => x.UserId, - principalTable: "OldUsers", + name: "FK_PlexSeasonsContent_PlexContent_PlexContentId", + column: x => x.PlexContentId, + principalTable: "PlexContent", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); @@ -310,7 +301,7 @@ namespace Ombi.Store.Migrations ParentRequestId = table.Column(nullable: false), RequestType = table.Column(nullable: false), RequestedDate = table.Column(nullable: false), - RequestedUserId = table.Column(nullable: false), + RequestedUserId = table.Column(nullable: true), Title = table.Column(nullable: true) }, constraints: table => @@ -323,42 +314,37 @@ namespace Ombi.Store.Migrations principalColumn: "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_ChildRequests_OldUsers_RequestedUserId", + name: "FK_ChildRequests_AspNetUsers_RequestedUserId", column: x => x.RequestedUserId, - principalTable: "OldUsers", + principalTable: "AspNetUsers", principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + onDelete: ReferentialAction.Restrict); }); migrationBuilder.CreateTable( - name: "MovieRequests", + name: "MovieIssues", columns: table => new { Id = table.Column(nullable: false) .Annotation("Sqlite:Autoincrement", true), - Approved = table.Column(nullable: false), - Available = table.Column(nullable: false), - Denied = table.Column(nullable: true), - DeniedReason = table.Column(nullable: true), - ImdbId = table.Column(nullable: true), + Description = table.Column(nullable: true), IssueId = table.Column(nullable: true), - Overview = table.Column(nullable: true), - PosterPath = table.Column(nullable: true), - ReleaseDate = table.Column(nullable: false), - RequestType = table.Column(nullable: false), - RequestedDate = table.Column(nullable: false), - RequestedUserId = table.Column(nullable: false), - Status = table.Column(nullable: true), - TheMovieDbId = table.Column(nullable: false), - Title = table.Column(nullable: true) + MovieId = table.Column(nullable: false), + Subect = table.Column(nullable: true) }, constraints: table => { - table.PrimaryKey("PK_MovieRequests", x => x.Id); + table.PrimaryKey("PK_MovieIssues", x => x.Id); table.ForeignKey( - name: "FK_MovieRequests_OldUsers_RequestedUserId", - column: x => x.RequestedUserId, - principalTable: "OldUsers", + name: "FK_MovieIssues_MovieRequests_IssueId", + column: x => x.IssueId, + principalTable: "MovieRequests", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_MovieIssues_MovieRequests_MovieId", + column: x => x.MovieId, + principalTable: "MovieRequests", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); @@ -411,34 +397,6 @@ namespace Ombi.Store.Migrations onDelete: ReferentialAction.Cascade); }); - migrationBuilder.CreateTable( - name: "MovieIssues", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("Sqlite:Autoincrement", true), - Description = table.Column(nullable: true), - IssueId = table.Column(nullable: true), - MovieId = table.Column(nullable: false), - Subect = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_MovieIssues", x => x.Id); - table.ForeignKey( - name: "FK_MovieIssues_MovieRequests_IssueId", - column: x => x.IssueId, - principalTable: "MovieRequests", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_MovieIssues_MovieRequests_MovieId", - column: x => x.MovieId, - principalTable: "MovieRequests", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - migrationBuilder.CreateTable( name: "EpisodeRequests", columns: table => new @@ -491,11 +449,6 @@ namespace Ombi.Store.Migrations table: "AspNetUserRoles", column: "RoleId"); - migrationBuilder.CreateIndex( - name: "IX_EmailTokens_UserId", - table: "EmailTokens", - column: "UserId"); - migrationBuilder.CreateIndex( name: "EmailIndex", table: "AspNetUsers", @@ -575,9 +528,6 @@ namespace Ombi.Store.Migrations migrationBuilder.DropTable( name: "AspNetUserTokens"); - migrationBuilder.DropTable( - name: "EmailTokens"); - migrationBuilder.DropTable( name: "GlobalSettings"); @@ -602,9 +552,6 @@ namespace Ombi.Store.Migrations migrationBuilder.DropTable( name: "AspNetRoles"); - migrationBuilder.DropTable( - name: "AspNetUsers"); - migrationBuilder.DropTable( name: "PlexContent"); @@ -621,7 +568,7 @@ namespace Ombi.Store.Migrations name: "TvRequests"); migrationBuilder.DropTable( - name: "OldUsers"); + name: "AspNetUsers"); } } } diff --git a/src/Ombi.Store/Migrations/OmbiContextModelSnapshot.cs b/src/Ombi.Store/Migrations/OmbiContextModelSnapshot.cs index 0a5397d0b..22defcf5c 100644 --- a/src/Ombi.Store/Migrations/OmbiContextModelSnapshot.cs +++ b/src/Ombi.Store/Migrations/OmbiContextModelSnapshot.cs @@ -124,28 +124,6 @@ namespace Ombi.Store.Migrations b.ToTable("AspNetUserTokens"); }); - modelBuilder.Entity("Ombi.Store.Entities.EmailTokens", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("DateUsed"); - - b.Property("Token"); - - b.Property("Used"); - - b.Property("UserId"); - - b.Property("ValidUntil"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("EmailTokens"); - }); - modelBuilder.Entity("Ombi.Store.Entities.GlobalSettings", b => { b.Property("Id") @@ -311,7 +289,7 @@ namespace Ombi.Store.Migrations b.Property("RequestedDate"); - b.Property("RequestedUserId"); + b.Property("RequestedUserId"); b.Property("Title"); @@ -373,7 +351,7 @@ namespace Ombi.Store.Migrations b.Property("RequestedDate"); - b.Property("RequestedUserId"); + b.Property("RequestedUserId"); b.Property("Status"); @@ -436,30 +414,6 @@ namespace Ombi.Store.Migrations b.ToTable("TvRequests"); }); - modelBuilder.Entity("Ombi.Store.Entities.User", b => - { - b.Property("Id") - .ValueGeneratedOnAdd(); - - b.Property("Alias"); - - b.Property("ClaimsSerialized"); - - b.Property("EmailAddress"); - - b.Property("Password"); - - b.Property("Salt"); - - b.Property("UserType"); - - b.Property("Username"); - - b.HasKey("Id"); - - b.ToTable("OldUsers"); - }); - modelBuilder.Entity("Ombi.Store.Repository.Requests.EpisodeRequests", b => { b.Property("Id") @@ -541,14 +495,6 @@ namespace Ombi.Store.Migrations .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("Ombi.Store.Entities.EmailTokens", b => - { - b.HasOne("Ombi.Store.Entities.User", "User") - .WithMany() - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade); - }); - modelBuilder.Entity("Ombi.Store.Entities.PlexSeasonsContent", b => { b.HasOne("Ombi.Store.Entities.PlexContent") @@ -564,10 +510,9 @@ namespace Ombi.Store.Migrations .HasForeignKey("ParentRequestId") .OnDelete(DeleteBehavior.Cascade); - b.HasOne("Ombi.Store.Entities.User", "RequestedUser") + b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") .WithMany() - .HasForeignKey("RequestedUserId") - .OnDelete(DeleteBehavior.Cascade); + .HasForeignKey("RequestedUserId"); }); modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieIssues", b => @@ -584,10 +529,9 @@ namespace Ombi.Store.Migrations modelBuilder.Entity("Ombi.Store.Entities.Requests.MovieRequests", b => { - b.HasOne("Ombi.Store.Entities.User", "RequestedUser") + b.HasOne("Ombi.Store.Entities.OmbiUser", "RequestedUser") .WithMany() - .HasForeignKey("RequestedUserId") - .OnDelete(DeleteBehavior.Cascade); + .HasForeignKey("RequestedUserId"); }); modelBuilder.Entity("Ombi.Store.Entities.Requests.TvIssues", b => diff --git a/src/Ombi.Store/Repository/ITokenRepository.cs b/src/Ombi.Store/Repository/ITokenRepository.cs index db8b47547..9d15c9d6a 100644 --- a/src/Ombi.Store/Repository/ITokenRepository.cs +++ b/src/Ombi.Store/Repository/ITokenRepository.cs @@ -4,9 +4,9 @@ using Ombi.Store.Entities; namespace Ombi.Store.Repository { - public interface ITokenRepository - { - Task CreateToken(EmailTokens token); - Task GetToken(Guid tokenId); - } + //public interface ITokenRepository + //{ + // Task CreateToken(EmailTokens token); + // Task GetToken(Guid tokenId); + //} } \ No newline at end of file diff --git a/src/Ombi.Store/Repository/IUserRepository.cs b/src/Ombi.Store/Repository/IUserRepository.cs index e61cb4f57..cb1ced2e8 100644 --- a/src/Ombi.Store/Repository/IUserRepository.cs +++ b/src/Ombi.Store/Repository/IUserRepository.cs @@ -4,13 +4,13 @@ using Ombi.Store.Entities; namespace Ombi.Store.Repository { - public interface IUserRepository - { - Task CreateUser(User user); - Task GetUser(string username); - Task> GetUsers(); - Task DeleteUser(User user); - Task UpdateUser(User user); - Task GetUser(int userId); - } + //public interface IUserRepository + //{ + // Task CreateUser(User user); + // Task GetUser(string username); + // Task> GetUsers(); + // Task DeleteUser(User user); + // Task UpdateUser(User user); + // Task GetUser(int userId); + //} } \ No newline at end of file diff --git a/src/Ombi.Store/Repository/TokenRepository.cs b/src/Ombi.Store/Repository/TokenRepository.cs index fb51c3660..645f515dd 100644 --- a/src/Ombi.Store/Repository/TokenRepository.cs +++ b/src/Ombi.Store/Repository/TokenRepository.cs @@ -6,25 +6,25 @@ using System.Threading.Tasks; namespace Ombi.Store.Repository { - public class TokenRepository : ITokenRepository - { - public TokenRepository(IOmbiContext db) - { - Db = db; - } + //public class TokenRepository : ITokenRepository + //{ + // public TokenRepository(IOmbiContext db) + // { + // Db = db; + // } - private IOmbiContext Db { get; } + // private IOmbiContext Db { get; } - public async Task CreateToken(EmailTokens token) - { - token.Token = Guid.NewGuid(); - await Db.EmailTokens.AddAsync(token); - await Db.SaveChangesAsync(); - } + // public async Task CreateToken(EmailTokens token) + // { + // token.Token = Guid.NewGuid(); + // await Db.EmailTokens.AddAsync(token); + // await Db.SaveChangesAsync(); + // } - public async Task GetToken(Guid tokenId) - { - return await Db.EmailTokens.FirstOrDefaultAsync(x => x.Token == tokenId); - } - } + // public async Task GetToken(Guid tokenId) + // { + // return await Db.EmailTokens.FirstOrDefaultAsync(x => x.Token == tokenId); + // } + //} } diff --git a/src/Ombi.Store/Repository/UserRepository.cs b/src/Ombi.Store/Repository/UserRepository.cs index 38f49edc7..d3217aea1 100644 --- a/src/Ombi.Store/Repository/UserRepository.cs +++ b/src/Ombi.Store/Repository/UserRepository.cs @@ -34,53 +34,53 @@ using Ombi.Store.Entities; namespace Ombi.Store.Repository { - public class UserRepository : IUserRepository - { - public UserRepository(IOmbiContext ctx) - { - Db = ctx; - } + //public class UserRepository : IUserRepository + //{ + // public UserRepository(IOmbiContext ctx) + // { + // Db = ctx; + // } - private IOmbiContext Db { get; } + // private IOmbiContext Db { get; } - public async Task GetUser(string username) - { - var user = await Db.OldUsers.FirstOrDefaultAsync(x => x.Username.ToLower() == username.ToLower()); - Db.Entry(user).Reload(); - return user; - } + // public async Task GetUser(string username) + // { + // var user = await Db.OldUsers.FirstOrDefaultAsync(x => x.Username.ToLower() == username.ToLower()); + // Db.Entry(user).Reload(); + // return user; + // } - public async Task GetUser(int userId) - { - var user = await Db.OldUsers.FirstOrDefaultAsync(x => x.Id == userId); - Db.Entry(user).Reload(); - return user; - } + // public async Task GetUser(int userId) + // { + // var user = await Db.OldUsers.FirstOrDefaultAsync(x => x.Id == userId); + // Db.Entry(user).Reload(); + // return user; + // } - public async Task CreateUser(User user) - { - Db.OldUsers.Add(user); - await Db.SaveChangesAsync(); - } + // public async Task CreateUser(User user) + // { + // Db.OldUsers.Add(user); + // await Db.SaveChangesAsync(); + // } - public async Task> GetUsers() - { - return await Db.OldUsers.ToListAsync(); - } + // public async Task> GetUsers() + // { + // return await Db.OldUsers.ToListAsync(); + // } - public async Task DeleteUser(User user) - { - Db.OldUsers.Remove(user); - await Db.SaveChangesAsync(); - } + // public async Task DeleteUser(User user) + // { + // Db.OldUsers.Remove(user); + // await Db.SaveChangesAsync(); + // } - public async Task UpdateUser(User user) - { - Db.Entry(user).State = EntityState.Modified; - Db.Entry(user).Property(x => x.Salt).IsModified = false; - Db.Entry(user).Property(x => x.Password).IsModified = false; - await Db.SaveChangesAsync(); - return user; - } - } + // public async Task UpdateUser(User user) + // { + // Db.Entry(user).State = EntityState.Modified; + // Db.Entry(user).Property(x => x.Salt).IsModified = false; + // Db.Entry(user).Property(x => x.Password).IsModified = false; + // await Db.SaveChangesAsync(); + // return user; + // } + //} } \ No newline at end of file diff --git a/src/Ombi/Controllers/IdentityController.cs b/src/Ombi/Controllers/IdentityController.cs index 3adfb52fb..f71ad6ecf 100644 --- a/src/Ombi/Controllers/IdentityController.cs +++ b/src/Ombi/Controllers/IdentityController.cs @@ -435,7 +435,7 @@ namespace Ombi.Controllers } // We have the user - var token = await UserManager.GenerateEmailConfirmationTokenAsync(user); + var token = await UserManager.GeneratePasswordResetTokenAsync(user); // We now need to email the user with this token var emailSettings = await EmailSettings.GetSettingsAsync(); var customizationSettings = await CustomizationSettings.GetSettingsAsync(); diff --git a/src/Ombi/Startup.cs b/src/Ombi/Startup.cs index 3dc8b40ec..d74c36ea2 100644 --- a/src/Ombi/Startup.cs +++ b/src/Ombi/Startup.cs @@ -169,6 +169,7 @@ namespace Ombi #endif // Make sure you have memory cache available unless you're using another storage provider services.AddMemoryCache(); + } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. @@ -232,9 +233,9 @@ namespace Ombi // Setup the scheduler var jobSetup = (IJobSetup)app.ApplicationServices.GetService(typeof(IJobSetup)); + var ctx = (IOmbiContext)app.ApplicationServices.GetService(typeof(IOmbiContext)); jobSetup.Setup(); - - //ConfigureAuth(app, (IOptions)app.ApplicationServices.GetService(typeof(IOptions))); + ctx.Seed(); var provider = new FileExtensionContentTypeProvider(); provider.Mappings[".map"] = "application/octet-stream";