public void Configure(EntityTypeBuilder <User> builder)
        {
            builder.ToTable(nameof(User)).HasIndex(a => a.EmailAddress).IsUnique();
            builder.ToTable(nameof(User)).Property(a => a.EmailAddress).IsRequired();
            builder.ToTable(nameof(User)).Property(a => a.PasswordHashToBase64).IsRequired();

            var seedData = new User[]
            {
                new User
                {
                    UserId               = 1,
                    EmailAddress         = "*****@*****.**",
                    PasswordHashToBase64 = CryptographyLogic.HashStringToSha256ToBase64("password123.ABC")
                },
                new User
                {
                    UserId               = 2,
                    EmailAddress         = "*****@*****.**",
                    PasswordHashToBase64 = CryptographyLogic.HashStringToSha256ToBase64("password456.DEF")
                },
                new User
                {
                    UserId               = 3,
                    EmailAddress         = "*****@*****.**",
                    PasswordHashToBase64 = CryptographyLogic.HashStringToSha256ToBase64("password789.GHI")
                }
            };

            builder.ToTable(nameof(User)).HasData(seedData);
        }
Beispiel #2
0
        public async Task <LoginResponse> Handle(LoginRequest request, CancellationToken cancellationToken)
        {
            var user = userRepo.Query().Where(a => a.EmailAddress == request.RequestModel.EmailAddress).SingleOrDefault();

            if (user == null)
            {
                throw new NotFoundException("User not found.");
            }

            if (user.PasswordHashToBase64 != CryptographyLogic.HashStringToSha256ToBase64(request.RequestModel.Password))
            {
                throw new IdentityException("Invalid credentials!");
            }

            var jwtDetail = await jwtManager.GenerateJwtDetails(new List <Claim>() { new Claim(CustomClaimTypeConstants.EmailAddress, user.EmailAddress) });

            return(new LoginResponse
            {
                ResponseModel = new JwtDetailResponseModel
                {
                    JwtDetail = jwtDetail
                }
            });
        }