예제 #1
0
        public UserWithToken Register(string loginName, string password)
        {
            var user = _userRepository.TryFindByLogin(loginName);

            if (user != null)
            {
                throw new UsernameAlreadyInUseException(loginName);
            }

            var hashedPassword = _passwordHasher.Hash(password);

            user = new User(Guid.NewGuid(), loginName, hashedPassword);
            _userRepository.CreateUser(user);
            RecurringJob.AddOrUpdate($"{user.Id}", () =>
                                     _backgroundStatisticGenerator.UpdateUserFacts(user.Id),
                                     _configuration.GetValue <string>("CronCronRecalculateStatisticPeriod"));
            return(new UserWithToken(user, _jwtIssuer.GenerateToken(user)));
        }
        public IActionResult Authenticate([FromBody] LoginRequest request)
        {
            var user = _userService.LoginUser(request.Login, request.Password);

            var token = _jwtIssuer.GenerateToken(user);

            var response = new LoginResponse(token);

            return(Ok(response));
        }
예제 #3
0
        public IActionResult LoginUser([FromBody] LoginRequest loginRequest)
        {
            var optionUser = _userService.LogInByCredentials(loginRequest.Username, loginRequest.Password);

            return(optionUser.Match <IActionResult>(
                       Some: user =>
            {
                var token = _jwtIssuer.GenerateToken(user);
                var userCreateResponse = new UserCreateResponse(token);
                return Ok(userCreateResponse);
            },
                       None: Ok(new
            {
                errors = new
                {
                    passwordError = "Invalid password.",
                    commonError = "There are errors with some fields bellow."
                }
            })));
        }