コード例 #1
0
        public User Register(User user, string password)
        {
            if (string.IsNullOrWhiteSpace(password))
            {
                throw new AppException("Password is required");
            }

            if (_context.Users.Find(u => u.Username == user.Username.Trim()).FirstOrDefault() != null)
            {
                throw new AppException("Username '" + user.Username + "' is already taken");
            }
            try
            {
                byte[] passwordHash, passwordSalt;
                PasswordHasher.CreatePasswordHash(password, out passwordHash, out passwordSalt);

                user.Roles = new List <Role> {
                    new Role {
                        Name = "User"
                    }
                };
                user.PasswordHash = passwordHash;
                user.PasswordSalt = passwordSalt;
                user.DateCreated  = DateTime.Now;
                user.DateModified = DateTime.Now;
                user.Username     = user.Username.Trim();
                user.UserId       = _tokeniser.CreateToken(user.FirstName, user.LastName);
                _context.Users.InsertOne(user);
            }
            catch (AppException)
            {
                //shout/catch/throw/log
            }
            return(user);
        }
コード例 #2
0
        public IActionResult Authenticate([FromBody] UserDto userDto)
        {
            try
            {
                var user = _userService.Authenticate(userDto.Username, userDto.Password);

                if (user == null)
                {
                    return(BadRequest("Username or password is incorrect"));
                }

                var Token = _tokeniser.CreateToken(user.Id.ToString());

                return(Ok(new { user.Id, user.Username, user.FirstName, user.LastName, Token }));
            }
            catch (AppException ex)
            {
                return(BadRequest(ex.Message));//shout/catch/throw/log
            }
        }