예제 #1
0
        public async Task <IActionResult> LoginAsync([FromBody] LoginModel loginModel)
        {
            //!string.IsNullOrEmpty(loginModel.Email) && !string.IsNullOrEmpty(loginModel.Password)

            if (ModelState.IsValid)
            {
                UserDTO userFromDB = await _usersService.GetUserByEmailAsync(loginModel.Email);

                if (userFromDB != null)
                {
                    if (PasswordManager.VerifyPasswordHash(loginModel.Password, userFromDB.PasswordHash, userFromDB.PasswordSalt))
                    {
                        List <Guid> userFromDBRoleId = _usersService.GetRoleIdByUserId(userFromDB.Id);
                        Guid        roleID           = userFromDBRoleId[0];

                        string tokenString = PasswordManager.CreateToken(userFromDB.Name, roleID, _appSettings.Secret);


                        // return basic user info and authentication token
                        // return Ok(tokenString);

                        return(Ok(new
                        {
                            Id = userFromDB.Id,
                            Name = userFromDB.Name,
                            Email = userFromDB.Email,
                            UserRole = roleID,
                            Token = tokenString
                        }));
                    }
                }
                return(BadRequest(new { message = "User don't exist" }));
            }
            return(BadRequest(new { message = "Username or password is incorrect" }));
        }