Ejemplo n.º 1
0
        public async Task <IActionResult> Register([FromBody] RegisterModelDto registerModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new BadRequestError("Password and username required.")));
            }

            var newUser = new User()
            {
                FirstName = registerModel.FirstName.ToLowerInvariant(),
                Email     = registerModel.Email.ToLowerInvariant(),
                Username  = registerModel.Username.ToLowerInvariant(),
            };


            //  Username unique?
            var isUsernameUnique = await _wpbService.UsernameUnique(newUser.Username);

            if (!isUsernameUnique)
            {
                return(BadRequest(new BadRequestError($"Username: {registerModel.Username} is already in use.")));
            }

            //  Email unique?
            var isEmailUnique = await _wpbService.EmailUnique(newUser.Email);

            if (!isEmailUnique)
            {
                return(BadRequest(new BadRequestError($"Email: {registerModel.Email} is already in use.")));
            }

            //  Add user
            await _wpbService.CreateUserAsync(newUser, registerModel.Password);

            //  Build new user token
            var tokenString = GenerateToken(newUser);


            // This is just a regular member so we don't need to create any claims
            //  Add user claim

            /*var newClaim = new UserClaim()
             * {
             *  UserId = newUser.Id,
             *  ClaimName = WpbClaims.ReadTeamData
             * };*/

            return(Ok(
                       new
            {
                Id = newUser.Id.ToString(),
                newUser.Username,
                newUser.FirstName,
                newUser.Email,
                Token = tokenString
            }));
        }