public async Task <IActionResult> Register([FromBody] RegisterDtoRequest registerDto)
        {
            if (!ModelState.IsValid)
            {
                return(StatusCodeAndDtoWrapper.BuilBadRequest(ModelState));
            }
            var user = new ApplicationUser
            {
                UserName = registerDto.Username,
                Email    = registerDto.Email
            };

            var result = await _usersService.CreateUserAsync(user, registerDto.Password);

            if (result.Succeeded)
            {
                // return StatusCodeAndDtoWrapper.BuildSuccess("Registered successfully");
                return(Ok(
                           new
                {
                    success = true,
                    full_messages = new string[]
                    {
                        "Register was successful",
                    }
                }));
            }
            else
            {
                return(StatusCodeAndDtoWrapper.BuildBadRequest(result.Errors));
            }
        }
Example #2
0
        public async Task <ServiceResponse <RegisterDtoResponse> > RegisterAsync(RegisterDtoRequest dto)
        {
            if (await _context.Users.Where(x => x.Email == dto.Email).AnyAsync())
            {
                return(new ServiceResponse <RegisterDtoResponse>(HttpStatusCode.BadRequest, "Email already exists"));
            }

            if (await _context.Users.Where(x => x.UserName == dto.UserName).AnyAsync())
            {
                return(new ServiceResponse <RegisterDtoResponse>(HttpStatusCode.BadRequest, "Nick already exists"));
            }

            if (dto.Role == Role.Administrator)
            {
                var currentUserName = _userAccessor.GetCurrentUsername();

                if (currentUserName == null)
                {
                    return(new ServiceResponse <RegisterDtoResponse>(HttpStatusCode.BadRequest, "No permissions to register an account with this role"));
                }

                var currentUser = await _userManager.FindByNameAsync(currentUserName);

                if (currentUser == null || currentUser.Role != Role.Administrator)
                {
                    return(new ServiceResponse <RegisterDtoResponse>(HttpStatusCode.BadRequest, "No permissions to register an account with this role"));
                }
            }

            if (dto.Role == Role.Owner || dto.Role == Role.Vet)
            {
                var user = new ApplicationUser()
                {
                    LastName  = dto.LastName,
                    FirstName = dto.FirstName,
                    Email     = dto.Email,
                    UserName  = dto.UserName,
                    Role      = dto.Role
                };

                var result = await _userManager.CreateAsync(user, dto.Password);

                if (result.Succeeded)
                {
                    var responseDto = new RegisterDtoResponse()
                    {
                        FirstName = user.FirstName,
                        LastName  = user.LastName,
                        Email     = user.Email,
                        UserName  = user.UserName,
                        Role      = user.Role,
                        Token     = _jwtGenerator.CreateToken(user)
                    };

                    return(new ServiceResponse <RegisterDtoResponse>(HttpStatusCode.OK, responseDto));
                }
            }
            return(new ServiceResponse <RegisterDtoResponse>(HttpStatusCode.Unauthorized));
        }
Example #3
0
        public async Task <ActionResult <RegisterDtoResponse> > Register(RegisterDtoRequest dto)
        {
            var response = await _userService.RegisterAsync(dto);

            if (response.StatusCode == HttpStatusCode.OK)
            {
                return(Ok(response.ResponseContent));
            }
            if (response.StatusCode == HttpStatusCode.Unauthorized)
            {
                return(Unauthorized(response.Message));
            }
            return(BadRequest(response.Message));
        }