public User Create(CreateUserModal user)
        {
            if (string.IsNullOrWhiteSpace(user.password))
            {
                throw new AppException("Password is required");
            }

            if (_context.Users.Any(x => x.username == user.username))
            {
                throw new AppException("Username " + user.username + " is already taken");
            }

            byte[] passwordHash, passwordSalt;
            CreatePasswordHash(user.password, out passwordHash, out passwordSalt);
            User newUser = new User();

            newUser.PasswordHash = passwordHash;
            newUser.PasswordSalt = passwordSalt;
            newUser.fullname     = user.fullname;
            newUser.username     = user.username;

            _context.Users.Add(newUser);
            _context.SaveChanges();
            return(newUser);
        }
Beispiel #2
0
        public IActionResult  createUser([FromBody] CreateUserModal user)
        {
            try
            {
                _userRepository.Create(user);
                var userAuthen = _userRepository.Authenticate(user.username, user.password);

                if (userAuthen == null)
                {
                    return(BadRequest(new { message = "Username or password is incorrect" }));
                }
                var tokenHandler    = new JwtSecurityTokenHandler();
                var key             = Encoding.ASCII.GetBytes(Settings.privateKey);
                var tokenDescriptor = new SecurityTokenDescriptor
                {
                    Subject = new ClaimsIdentity(new Claim[]
                    {
                        new Claim(ClaimTypes.Name, userAuthen.Result.userID.ToString()),
                    }),
                    Expires            = DateTime.UtcNow.AddDays(1),
                    SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
                };
                var token       = tokenHandler.CreateToken(tokenDescriptor);
                var tokenString = tokenHandler.WriteToken(token);
                var username    = userAuthen.Result.username;
                var fullname    = userAuthen.Result.fullname;
                return(Ok(new
                {
                    user = new {
                        username = username,
                        fullname = fullname
                    },
                    Token = tokenString
                }));
            }
            catch (AppException ex)
            {
                return(BadRequest(new { message = ex.Message }));
            }
        }