예제 #1
0
        public async Task <IActionResult> Post([FromBody] RegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var emailUniq = await _userRepository.IsEmailUniq(model.Email);

            if (!emailUniq)
            {
                return(BadRequest("User with this email already exists"));
            }

            var uniqueToken = Guid.NewGuid().ToString();

            var user = new UserViewModel
            {
                UniqueToken = uniqueToken,
                Email       = model.Email,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                Lists       = new List <TodoListViewModel>(),
                IsAdmin     = model.IsAdmin
            };

            await _userRepository.AddAsync(user, model.Password);

            _userRepository.CommitChanges();

            AuthData authData = _authService.GetAuthData(user.UniqueToken);

            UserData userData = new UserData()
            {
                Email   = user.Email,
                Lists   = new List <Models.Database.TodoList>(),
                IsAdmin = user.IsAdmin
            };

            _logger.LogInfo($"User {user.Email} registered.");

            var result = new UserDetailsAuthData()
            {
                AuthData = authData, UserData = userData
            };

            return(Ok(result));
        }
예제 #2
0
        public async Task <IActionResult> Post([FromBody] LoginViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = await _userRepository.GetUserByEmail(model.Email);

            if (user == null)
            {
                return(BadRequest("No user with this email"));
            }

            var passwordValid = _authService.VerifyPassword(model.Password, user.Password);

            if (!passwordValid)
            {
                return(BadRequest("Invalid password"));
            }

            AuthData authData = _authService.GetAuthData(user.UniqueToken);

            UserData userData = new UserData()
            {
                Email   = user.Email,
                Lists   = new List <Models.Database.TodoList>(),
                IsAdmin = user.IsAdmin
            };

            _logger.LogInfo($"User {user.Email} logged in.");

            var result = new UserDetailsAuthData()
            {
                AuthData = authData, UserData = userData
            };

            return(Ok(result));
        }