コード例 #1
0
        public async Task <UserLoginResponseModel> ValidateUser(string email, string password)
        {
            // get the user info my email by using GetUserByEmail

            var dbUser = await _userRepository.GetUserByEmail(email);

            if (dbUser == null)
            {
                return(null);
            }

            var hashedPassword = CreateHashedPassword(password, dbUser.Salt);

            if (hashedPassword == dbUser.HashedPassword)
            {
                // passwords match so create response model object

                var loginResponseModel = new UserLoginResponseModel
                {
                    Id        = dbUser.Id,
                    Email     = dbUser.Email,
                    FirstName = dbUser.FirstName,
                    LastName  = dbUser.LastName
                };
                return(loginResponseModel);
            }

            return(null);
        }
コード例 #2
0
        private string GenerateJWT(UserLoginResponseModel userLoginResponseModel)
        {
            //add claims into JWT token
            var claims = new List <Claim> {
                new Claim(ClaimTypes.NameIdentifier, userLoginResponseModel.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.GivenName, userLoginResponseModel.FirstName),
                new Claim(JwtRegisteredClaimNames.FamilyName, userLoginResponseModel.LastName),
                new Claim(JwtRegisteredClaimNames.Email, userLoginResponseModel.Email)
            };

            var identityClaims = new ClaimsIdentity();

            identityClaims.AddClaims(claims);
            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["TokenSettings:PrivateKey"]));
            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);
            var expires     = DateTime.UtcNow.AddHours(_configuration.GetValue <double>("TokenSettings:ExpirationHours"));

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = identityClaims,
                Audience           = _configuration["TokenSettings:Audience"],
                Issuer             = _configuration["TokenSettings:Issuer"],
                SigningCredentials = credentials,
                Expires            = expires
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var encodedToken = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(encodedToken));
        }
コード例 #3
0
        private async Task DoLogin(UserLoginResponseModel userLoginResponseModel)
        {
            var token = GetJwtSecurityToken(userLoginResponseModel.AccessToken);

            var claims = new List <Claim> {
                new Claim("Jwt", userLoginResponseModel.AccessToken)
            };

            claims.AddRange(token.Claims);

            var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);

            var authProperties = new AuthenticationProperties
            {
                ExpiresUtc   = DateTimeOffset.Now.AddMinutes(60),
                IsPersistent = true
            };

            claims.AddRange(token.Claims);

            await HttpContext.SignInAsync(
                CookieAuthenticationDefaults.AuthenticationScheme,
                new ClaimsPrincipal(claimsIdentity),
                authProperties);
        }
コード例 #4
0
        public async Task <UserLoginResponseModel> ValidatUser(string email, string password)
        {
            //Step1: Get user record from the database by email
            var user = await _userRepository.GetUserByEmail(email);

            if (user == null)
            {
                //user does not exist
                throw new Exception("Register first, user does not exist");
            }

            //step3: Compare the database hashed password with hashed password genereated in step 2
            var hashedPassword = _cryptoService.HashPassword(password, user.Salt);

            if (user.HashedPassword == hashedPassword)
            { //user entered the right password
              //send some user details

                var response = new UserLoginResponseModel
                {
                    Id          = user.Id,
                    FirstName   = user.FirstName,
                    LastName    = user.LastName,
                    DateOfBirth = user.DateOfBirth,
                    Email       = user.Email
                };
                return(response);
            }
            return(null);
        }
コード例 #5
0
        public async Task <UserLoginResponseModel> Login(string email, string password)
        {
            var user = await _userRepository.GetUserByEmail(email);

            if (user == null)
            {//check in the mvc if this returned null.
                return(null);
            }

            var hashedPasswoed = CreateHashedPassword(password, user.Salt);

            if (hashedPasswoed == user.HashedPassword)
            {
                //user entered the correct password
                var loginResponseModel = new UserLoginResponseModel
                {
                    Id        = user.Id,
                    Email     = user.Email,
                    FirstName = user.FirstName,
                    LastName  = user.LastName
                };
                return(loginResponseModel);
            }
            return(null);
        }
コード例 #6
0
        private string GenerateJWT(UserLoginResponseModel userLoginResponseModel)
        {
            var claims = new List <Claim> {
                new Claim(ClaimTypes.NameIdentifier, userLoginResponseModel.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.GivenName, userLoginResponseModel.FirstName),
                new Claim(JwtRegisteredClaimNames.FamilyName, userLoginResponseModel.LastName),
                new Claim(JwtRegisteredClaimNames.Email, userLoginResponseModel.Email)
            };
            var identityClaims = new ClaimsIdentity();

            identityClaims.AddClaims(claims);
            var PrivateKey      = "401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b3727429090fb337591abd3e44453b954555b7a0812e1081c39b740293f765eae731f5a65ed1";
            var securityKey     = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(PrivateKey));
            var credentials     = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);
            var expires         = DateTime.UtcNow.AddHours(72);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = identityClaims,
                Audience           = "MovieShop Users",
                Issuer             = "MovieShop",
                SigningCredentials = credentials,
                Expires            = expires
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var encodedToken = tokenHandler.CreateToken(tokenDescriptor); // create the token here.

            return(tokenHandler.WriteToken(encodedToken));
        }
コード例 #7
0
ファイル: UserService.cs プロジェクト: aaronkung00/MovieShop
        public async Task <UserLoginResponseModel> ValidateUser(string email, string password)
        {
            // we are gonna check if the email exists in the database
            var user = await _userRepository.GetUserByEmail(email);

            if (user == null)
            {
                return(null);
            }


            var hashedPassword = _encryptionService.HashPassword(password, user.Salt);
            var isSuccess      = user.HashedPassword == hashedPassword;

            /*    var roles = await _userRoleRepository.ListAllWithIncludesAsync(ur => ur.UserId == user.Id, role => role.Role);
             *
             *  var response = _mapper.Map<UserLoginResponseModel>(user);
             *
             *  var userRoles = roles.ToList();
             *  if (userRoles.Any())
             *  {
             *      response.Roles = userRoles.Select(r => r.Role.Name).ToList();
             *  }
             *
             */

            var response = new UserLoginResponseModel {
                Id          = user.Id, Email = user.Email,
                LastName    = user.LastName,
                FirstName   = user.FirstName,
                DateOfBirth = user.DateOfBirth,
            };

            return(isSuccess ? response : null);
        }
コード例 #8
0
        public async Task <UserLoginResponseModel> Login(string email, string password)
        {
            // go to database and get the user info -- row by email
            var user = await _userRepository.GetUserbyEmail(email);

            if (user == null)
            {
                // return null
                return(null);
            }

            // get the password from UI and salt from above step from database and call CreateHashedPassword method

            var hashedPassword = CreateHashedPassword(password, user.Salt);

            if (hashedPassword == user.HashedPassword)
            {
                // user entered correct password

                var loginResponseModel = new UserLoginResponseModel
                {
                    Id        = user.Id,
                    Email     = user.Email,
                    FirstName = user.FirstName,
                    LastName  = user.LastName
                };
                return(loginResponseModel);
            }

            return(null);
        }
コード例 #9
0
        public async Task <UserLoginResponseModel> ValidateUser(string email, string password)
        {
            // we are gonna check if the email exists in the database
            var user = await _userRepository.GetUserByEmail(email);

            if (user == null)
            {
                return(null);              //some one try to login without register
            }
            var hashedPassword = _cryptoService.HashPassword(password, user.Salt);
            var isSuccess      = user.HashedPassword == hashedPassword;

            var response = new UserLoginResponseModel
            {
                Id          = user.Id,
                Email       = user.Email,
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                DateOfBirth = user.DateOfBirth
            };

            if (isSuccess)
            {
                return(response);
            }
            else
            {
                return(null);
            }

            //return isSuccess ? response : null;
        }
コード例 #10
0
ファイル: UserServices.cs プロジェクト: lampoon2gn/MovieShop
        public async Task <UserLoginResponseModel> ValidateUser(string email, string password)
        {
            //check if user exists
            var user = await _userRepository.GetUserByEmail(email);

            //user is not registerd
            if (user == null)
            {
                return(null);
            }
            var hashedPassword = _encryptionService.HashPassword(password, user.Salt);
            var isSuccess      = user.HashedPassword == hashedPassword;

            var response = new UserLoginResponseModel
            {
                Id          = user.Id,
                Email       = user.Email,
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                DateOfBirth = user.DateOfBirth
            };

            //var userRoles = roles.ToList();
            //if (userRoles.Any())
            //{
            //    response.Roles = userRoles.Select(r => r.Role.Name).ToList();
            //}

            //if success, return response, else return null
            return(isSuccess ? response : null);
        }
コード例 #11
0
ファイル: UserService.cs プロジェクト: kailakers/MovieShopWeb
        public async Task <UserLoginResponseModel> ValidateUser(string email, string password)
        {
            // Check if the email exists in the DB
            var user = await _userRepository.GetUserByEmail(email);

            if (user == null)
            {
                return(null);
            }

            var hashedPassword = _cryptoService.HashPassword(password, user.Salt);
            var isSuccess      = user.HashedPassword == hashedPassword;


            var response = new UserLoginResponseModel
            {
                Id          = user.Id,
                Email       = user.Email,
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                DateOfBirth = user.DateOfBirth,
                Roles       = new List <String>()
            };

            foreach (var userRole in user.UserRoles)
            {
                response.Roles.Add(userRole.Role.Name);
            }
            return(isSuccess ? response : null);
        }
コード例 #12
0
        public UserLoginResponseModel Login([FromBody] UserLoginRequestModel userModel)
        {
            var responseMessage = this.TryExecuteOperation(() =>
            {
                var user = this.unitOfWork.userRepository.All()
                           .SingleOrDefault(
                    x => x.Username == userModel.Username &&
                    x.AuthCode == userModel.AuthCode);
                if (user == null)
                {
                    //throw new ArgumentException("User is not registered!");
                    return(new UserLoginResponseModel()
                    {
                        DisplayName = "",
                        AccessToken = ""
                    });
                }

                if (user.AccessToken == null)
                {
                    user.AccessToken = SessionGenerator.GenerateSessionKey(user.Id);
                    this.unitOfWork.userRepository.Update(user.Id, user);
                }

                return(UserLoginResponseModel.FromEntity(user));
            });

            return(responseMessage);
        }
コード例 #13
0
        public async Task <UserLoginResponseModel> ValidateUser(string email, string password)
        {
            // we are gonna check if the email exists in the database
            var user = await _userRepository.GetUserByEmail(email);

            var hashedPassword = _encryptionService.HashPassword(password, user.Salt);
            var isSuccess      = user.HashedPassword == hashedPassword;

            var response = new UserLoginResponseModel
            {
                Id          = user.Id,
                Email       = user.Email,
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                DateOfBirth = user.DateOfBirth
            };

            //var response = _mapper.Map<UserLoginResponseModel>(user);
            //var userRoles = roles.ToList();
            //if (userRoles.Any())
            //{
            //    response.Roles = userRoles.Select(r => r.Role.Name).ToList();
            //}
            if (isSuccess)
            {
                return(response);
            }
            else
            {
                return(null);
            }
        }
コード例 #14
0
        public async Task <IActionResult> Login([FromBody] UserLoginRequestModel model)
        {
            UserLoginResponseModel response = await this._authorizationService.Login(model);

            if (!response.Succeeded)
            {
                this.ModelState.AddModelError("", "Invalid username or password");
                return(this.BadRequest(this.ModelState));
            }

            return(this.Ok(response));
        }
コード例 #15
0
        //RESET OR CHANGE PASSWORD
        public string SendOtpForPassReset(string otp, string email)
        {
            bool IsEmailTaken(string email)
            {
                MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

                dbConnection.CreateQuery("SELECT COUNT(*) AS \"COUNTER\" FROM users WHERE email='" + email + "'");
                MySqlDataReader reader  = dbConnection.DoQuery();
                string          counter = "";

                while (reader.Read())
                {
                    counter = reader["COUNTER"].ToString();
                }
                dbConnection.Dispose();
                return(!counter.Equals("0"));
            }

            if (!IsEmailTaken(email))
            {
                return("Email Not Found");
            }
            SendgridEmailProvider sendgridEmailProvider = new SendgridEmailProvider();

            sendgridEmailProvider.Send("*****@*****.**", "Shanty", email, "User", "Shanty - OTP", "OTP for Password Reset", "<strong>OTP: " + otp + "</strong>");
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT id,isemailverified FROM users WHERE email='" + email + "'");
            UserLoginResponseModel userLoginResponseModel = null;
            string          isEmailVerified = "";
            MySqlDataReader reader          = dbConnection.DoQuery();

            while (reader.Read())
            {
                userLoginResponseModel    = new UserLoginResponseModel();
                userLoginResponseModel.Id = reader["id"].ToString();
                isEmailVerified           = reader["isemailverified"].ToString();
            }
            dbConnection.Dispose();
            dbConnection = null;
            if (userLoginResponseModel != null)
            {
                if (isEmailVerified == "false")
                {
                    return("Email Not Verified");
                }
                return(new JwtAuthenticationProvider().GenerateJsonWebToken(userLoginResponseModel));
            }
            return("");
        }
コード例 #16
0
        public UserLoginResponseModel ValidateLogin(UserLoginReqeuestModel model)
        {
            UserLoginResponseModel ObjResponse = new UserLoginResponseModel();

            try
            {
                Users user = _ObjDBContext.Users.FirstOrDefault(u => u.Email.ToLower() == model.Email.ToLower() && u.IsActive == true && u.IsDeleted == false);
                if (user != null)
                {
                    var passwordHash = HashHelper.GetPasswordHash(user.SecurityStamp, model.Password);
                    if (user.PasswordHash != passwordHash)
                    {
                        ObjResponse.ResponseMessage = "Password is Wrong !";
                        ObjResponse.StatusCode      = 201;
                    }
                    else
                    {
                        //Below for generate JWT Token
                        var tokenHandler    = new JwtSecurityTokenHandler();
                        var key             = Encoding.ASCII.GetBytes(Key);
                        var tokenDescriptor = new SecurityTokenDescriptor
                        {
                            Subject = new ClaimsIdentity(new Claim[]
                            {
                                new Claim(ClaimTypes.Name, user.Email.ToString())
                            }),
                            Expires            = DateTime.Now.AddDays(7),
                            SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                        };
                        var token = tokenHandler.CreateToken(tokenDescriptor);
                        ObjResponse.Token           = tokenHandler.WriteToken(token);
                        ObjResponse.ExpiryDate      = tokenDescriptor.Expires;
                        ObjResponse.ResponseMessage = "Ok";
                        ObjResponse.StatusCode      = 200;
                    }
                }
                else
                {
                    ObjResponse.ResponseMessage = "Email Id is Wrong !";
                    ObjResponse.StatusCode      = 201;
                }
            }
            catch (Exception ex)
            {
                ObjResponse.ResponseMessage = Convert.ToString(ex);
                ObjResponse.StatusCode      = 401;
            }
            return(ObjResponse);
        }
コード例 #17
0
        public UserLoginResponseModel login(UserLoginRequestModel userLoginRequestModel, out ErrorModel errorModel)
        {
            errorModel = null;
            try
            {
                Auth authHelper = new Auth();
                UserLoginResponseModel loginResponseModel = authHelper.login(userLoginRequestModel, out errorModel);

                return(loginResponseModel);
            }
            catch (Exception)
            {
                return(null);
            }
        }
コード例 #18
0
        public string GenerateJsonWebToken(UserLoginResponseModel userLoginResponseModel)
        {
            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Environment.GetEnvironmentVariable("JWT_KEY")));
            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
            var claims      = new[]
            {
                new Claim(JwtRegisteredClaimNames.Sid, userLoginResponseModel.Id),
            };
            var token = new JwtSecurityToken(Environment.GetEnvironmentVariable("JWT_ISSUER"),
                                             Environment.GetEnvironmentVariable("JWT_ISSUER"),
                                             claims,
                                             expires: DateTime.Now.AddMinutes(600),
                                             signingCredentials: credentials);

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }
コード例 #19
0
        private async void SendMail(string BODY)
        {
            string res = await this.http.PostAsync("http://192.168.0.184:5000/email", BODY, "application/json", "POST", token);

            UserLoginResponseModel response = JsonConvert.DeserializeObject <UserLoginResponseModel>(res);

            if (response.status)
            {
                MessageBox.Show("Email sent successfuly!");
            }
            else
            {
                MessageBox.Show("Error occured!");
            }
            TitleProductSection.Text = selectedProduct.title;
        }
コード例 #20
0
        private string GenerateJWT(UserLoginResponseModel model)
        {
            // we will use the token libraries to create token

            var claims = new List <Claim>()
            {
                new Claim(ClaimTypes.NameIdentifier, model.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.Email, model.Email),
                new Claim(JwtRegisteredClaimNames.GivenName, model.FirstName),
                new Claim(JwtRegisteredClaimNames.FamilyName, model.LastName)
            };

            // create identity object and store claims
            var identityClaims = new ClaimsIdentity();

            identityClaims.AddClaims(claims);

            // read the secret key from app settings, make sure secret key is unique and not guessable
            // In real world we use something like Azure KeyVault to store any secrets of application

            var secretKey   = _configuration["JwtSettings:SecretKey"];
            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey));

            // get the expiration time of the token
            var expires = DateTime.UtcNow.AddDays(_configuration.GetValue <int>("JwtSettings:Expiration"));

            //pick an hashing algorithm
            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);


            // create the token object that yu will use to create the token that will include all the information such as credentials, claims, expiration time,

            var tokenHandler = new JwtSecurityTokenHandler();

            var tokenDescriptor = new SecurityTokenDescriptor()
            {
                Subject            = identityClaims,
                Expires            = expires,
                SigningCredentials = credentials,
                Issuer             = _configuration["JwtSettings:Issuer"],
                Audience           = _configuration["JwtSettings:Audience"]
            };

            var encodedJwt = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(encodedJwt));
        }
コード例 #21
0
        private string CreateJWT(UserLoginResponseModel model)
        {
            var claims = new List <Claim>()
            {
                new Claim(ClaimTypes.NameIdentifier, model.Id.ToString()),
                new Claim(JwtRegisteredClaimNames.GivenName, model.FirstName),
                new Claim(JwtRegisteredClaimNames.FamilyName, model.LastName),
                new Claim(JwtRegisteredClaimNames.Email, model.Email)
            };

            // create identity object and store above claims
            var identityClaims = new ClaimsIdentity();

            identityClaims.AddClaims(claims);

            // read the secret key from the app.settings.json, make sure secret key is unique and non guessable
            // In real world we dont store these secret keys in appsettings, we use something like Azure KeyVault

            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["MovieShopSecretKey"]));

            //pick a builtin algorithm for hashing

            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);

            // establish the expiration time for the token

            var expires = DateTime.Now.AddDays(_configuration.GetValue <int>("ExpirationDuration"));

            var tokenHandler = new JwtSecurityTokenHandler();

            // create a object that's gonna store all the above information

            var tokenObject = new SecurityTokenDescriptor()
            {
                Subject            = identityClaims,
                Expires            = expires,
                SigningCredentials = credentials,
                Issuer             = _configuration["MovieShopIssuer"],
                Audience           = _configuration["MovieShopAudience"]
            };

            var encodedJwt = tokenHandler.CreateToken(tokenObject);

            return(tokenHandler.WriteToken(encodedJwt));
        }
コード例 #22
0
        public string GenerateJwtToken(UserLoginResponseModel userLoginModel)
        {
            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.Email, userLoginModel.Email),
                new Claim(ClaimTypes.GivenName, userLoginModel.FirstName),
                new Claim(ClaimTypes.Surname, userLoginModel.LastName),
                new Claim(ClaimTypes.DateOfBirth, userLoginModel.DateOfBirth.ToString()),
                new Claim(ClaimTypes.NameIdentifier, userLoginModel.Id.ToString()),
            };

            foreach (var role in userLoginModel.Roles)
            {
                claims.Add(new Claim(ClaimTypes.Role, role.Name));
            }

            var identityClaims = new ClaimsIdentity();

            identityClaims.AddClaims(claims);

            var securityKey =
                new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["TokenSettings:PrivateKey"]));

            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);

            var expires = DateTime.UtcNow.AddHours(_configuration.GetValue <double>("TokenSettings:ExpirationHours"));

            var tokenHandler = new JwtSecurityTokenHandler();

            var tokenObject = new SecurityTokenDescriptor
            {
                Subject            = identityClaims,
                Expires            = expires,
                SigningCredentials = credentials,
                Issuer             = _configuration["TokenSettings:Issuer"],
                Audience           = _configuration["TokenSettings:Audience"],
            };

            var encodedJwt = tokenHandler.CreateToken(tokenObject);

            return(tokenHandler.WriteToken(encodedJwt));
        }
コード例 #23
0
        private async void UserSignIn(string body)
        {
            string res = await this.http.PostAsync("http://192.168.0.184:5000/user/login", body);

            UserLoginResponseModel response = JsonConvert.DeserializeObject <UserLoginResponseModel>(res);

            if (response.status)
            {
                SignInContainer.Visibility = Visibility.Collapsed;
                HomeContainer.Visibility   = Visibility.Visible;
                File.WriteAllText("token.txt", response.token);
                SignInSectionUsername.Text     = "";
                SignInSectionPassword.Password = "";
                this.AuthUser(response.token);
            }
            else
            {
                MessageBox.Show("User is not valid!");
            }
        }
コード例 #24
0
        public async Task <UserLoginResponseModel> ValidateUser(string email, string password)
        {
            var user = await _userRepository.GetUserByEmail(email);

            if (user == null)
            {
                return(null);
            }
            var isSuccess = user.Password == password;
            var response  = new UserLoginResponseModel
            {
                Id       = user.Id,
                Email    = user.Email,
                FullName = user.FullName,
                JoinedOn = user.JoinedOn,
                Password = user.Password
            };

            return(response);
        }
コード例 #25
0
ファイル: UserService.cs プロジェクト: ZALIJIE/MovieShop
        //Execute when user login
        public async Task <UserLoginResponseModel> ValidateUser(string email, string password)
        {
            var user = await _userRepository.GetUserByEmail(email);

            if (user == null)
            {
                return(null);
            }
            var hashedpassword = _cryptoService.HashPassword(password, user.Salt);
            var isSuccess      = hashedpassword == user.HashedPassword;
            var returnedModel  = new UserLoginResponseModel
            {
                Id          = user.Id,
                Email       = user.Email,
                FirstName   = user.FirstName,
                LastName    = user.LastName,
                DateOfBirth = user.DateOfBirth,
            };

            return(isSuccess ? returnedModel : null);
        }
コード例 #26
0
        public string GenerateToken(UserLoginResponseModel user)
        {
            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                // new Claim(JwtRegisteredClaimNames.Birthdate, user.DateOfBirth?.ToShortDateString()),
                new Claim(JwtRegisteredClaimNames.GivenName, user.FirstName),
                new Claim(JwtRegisteredClaimNames.FamilyName, user.LastName),
                new Claim(JwtRegisteredClaimNames.Email, user.Email),
            };

            if (user.Roles != null)
            {
                claims.AddRange(user.Roles.Select(role => new Claim(ClaimTypes.Role, role)));
            }

            var identityClaims = new ClaimsIdentity();

            identityClaims.AddClaims(claims);

            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["TokenSettings:PrivateKey"]));
            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);
            var expires     = DateTime.UtcNow.AddHours(_config.GetValue <double>("TokenSettings:ExpirationHours"));

            var tokenHandler = new JwtSecurityTokenHandler();

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = identityClaims,
                Expires            = expires,
                SigningCredentials = credentials,
                Issuer             = _config["TokenSettings:Issuer"],
                Audience           = _config["TokenSettings:Audience"]
            };

            var encodedJwt = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(encodedJwt));
        }
コード例 #27
0
        public UserLoginResponseModel Login(string username, string password)
        {
            var appuser = this._userRepository.GetSingle(s => s.UserName == username, new string[] { "AppRole" });

            if (appuser == null || !IdentytiHelper.VerifyHashedPassword(appuser.PassWord, password) || appuser.Lock == true)
            {
                return(null);
            }
            var result = new UserLoginResponseModel()
            {
                UserId      = appuser.UserId,
                Username    = appuser.UserName,
                ProviderKey = Guid.NewGuid().ToString(),
                Roles       = new SelectResponseModel
                {
                    id   = appuser.AppRole.Id.ToString(),
                    text = appuser.AppRole.Name
                }
            };

            return(result);
        }
コード例 #28
0
        public UserLoginResponseModel ValidateUser(UserLoginModel userLoginModel, string guid)
        {
            var onlineRequestValidationModel = _tempcartService.ValidateOnlineRequest(guid);

            var model = new UserLoginResponseModel()
            {
                RequestValidationModel = onlineRequestValidationModel
            };

            if (onlineRequestValidationModel.RequestStatus != OnlineRequestStatus.Valid)
            {
                return(model);
            }

            if (!ModelState.IsValid)
            {
                throw new Exception("Please enter a valid Username/Password!");
            }

            var isValid = _userLoginRepository.ValidateUser(userLoginModel.UserName, userLoginModel.Password);

            if (!isValid)
            {
                GetLoginFailureMessage(userLoginModel);
            }

            var userLogin = _userLoginRepository.GetByUserName(userLoginModel.UserName);
            var customer  = _customerRepository.GetCustomerByUserId(userLogin.Id);

            model = new UserLoginResponseModel {
                CustomerId = customer.CustomerId, CustomerName = customer.NameAsString, IsValid = true, Message = "", RequestValidationModel = onlineRequestValidationModel
            };


            return(model);
        }
コード例 #29
0
        //USER LOGIN
        public string LoginUser(string email, string pass)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT id,pass,isemailverified FROM users WHERE email='" + email + "'");
            UserLoginResponseModel userLoginResponseModel = null;
            string          passFromDb      = "";
            string          isEmailVerified = "";
            MySqlDataReader reader          = dbConnection.DoQuery();

            while (reader.Read())
            {
                userLoginResponseModel    = new UserLoginResponseModel();
                userLoginResponseModel.Id = reader["id"].ToString();
                passFromDb      = reader["pass"].ToString();
                isEmailVerified = reader["isemailverified"].ToString();
            }
            dbConnection.Dispose();
            dbConnection = null;
            if (userLoginResponseModel != null)
            {
                if (BCrypt.Net.BCrypt.Verify(pass, passFromDb))
                {
                    if (isEmailVerified == "false")
                    {
                        return("Email Not Verified");
                    }
                    return(new JwtAuthenticationProvider().GenerateJsonWebToken(userLoginResponseModel));
                }
                else
                {
                    return("");
                }
            }
            return("");
        }
コード例 #30
0
        public async Task <UserLoginResponseModel> ValidateUser(string email, string password)
        {
            var user = await _repository.GetUserByEmail(email);

            if (user == null)
            {
                return(null);
            }

            var hashedPassword = _cryptoService.HashPasswordWithSalt(password, user.Salt);

            if (hashedPassword == user.HashedPassword)
            {
                var responseUser = new UserLoginResponseModel()
                {
                    Id          = user.Id,
                    Email       = user.Email,
                    FirstName   = user.FirstName,
                    LastName    = user.LastName,
                    DateOfBirth = user.DateOfBirth
                };
                responseUser.Roles = new List <RoleModel>();
                foreach (var role in user.Roles)
                {
                    responseUser.Roles.Add(new RoleModel
                    {
                        Id   = role.Id,
                        Name = role.Name
                    });
                }

                return(responseUser);
            }

            return(null);
        }