コード例 #1
0
        public IActionResult SignupUser([FromBody] SignupRequestDTO body)
        {
            if (!body.Validate())
            {
                return(BadRequest(SignupResponseDTO.BadRequest()));
            }

            // Convert DTO --> raw signup data
            var raw = new SignupRaw {
                Email    = body.email,
                Name     = body.name,
                Password = body.password,
            };

            // SignupUser
            var data = _service.SignupUser(raw);

            if (!data.Success)
            {
                if (data.Error == SignupResponseError.EmailUniqueness)
                {
                    return(BadRequest(SignupResponseDTO.EmailError()));
                }

                return(BadRequest(SignupResponseDTO.BadRequest()));
            }


            return(Ok(new SignupResponseDTO(true, data.UserId, data.Tokens)));
        }
コード例 #2
0
        public SignupResponse SignupUser(SignupRaw raw)
        {
            // Convert from Raw --> Domain Entity
            var user = new Domain.User {
                Email            = new Email(raw.Email),
                Name             = new Name(raw.Name),
                Password         = new Password(raw.Password),
                CreatedAt        = DateTime.Now,
                ProfileImagePath = new ImagePath(),
                Username         = new Username(raw.Username),
            };

            // Check uniqueness of email
            if (!_userRepository.CheckEmailUniqueness(user.Email))
            {
                return(new SignupResponse(false, SignupResponseError.EmailUniqueness));
            }

            // Check uniqueness of username
            if (!_userRepository.CheckUsernameUniqueness(user.Username))
            {
                return(new SignupResponse(false, SignupResponseError.UsernameUniqueness));
            }

            // Add user to context and save to DB
            var model = _userRepository.Add(user);

            _userRepository.SaveChanges();

            // create tokens
            var access  = _createToken(TokenType.Access, model.Id);
            var refresh = _createToken(TokenType.Refresh, model.Id);

            return(new SignupResponse(true, model.Id, access, refresh));
        }