public async Task <IActionResult> RegisterAsync(UserForRegisterViewModel userForRegisterViewModel)
        {
            var userDto           = _mapper.Map <UserDto>(userForRegisterViewModel);
            var userToRegisterDto = _mapper.Map <UserRegisterDto>(userForRegisterViewModel);

            var today = DateTime.Today;
            var age   = today.Year - userForRegisterViewModel.BirthDate.Year;

            if (userForRegisterViewModel.BirthDate > today.AddYears(-age))
            {
                age--;
            }

            if (await _authRepository.UserExists(userDto) != null)
            {
                return(Unauthorized("ERR_USERNAME_EXISTS"));
            }

            if (await _authRepository.EmailExists(userDto) != null)
            {
                return(Unauthorized("ERR_EMAIL_EXISTS"));
            }

            if (age < 18)
            {
                return(Unauthorized("ERR_MAJORITY_REQUIRED"));
            }

            var result = await _authRepository.RegisterAsync(userToRegisterDto);

            return(Ok(result));
        }
        public async Task <IActionResult> Post([FromBody] UserForRegisterViewModel userForRegister)
        {
            var tokenHandler = new JwtSecurityTokenHandler();

            var user = new User
            {
                Email    = userForRegister.Email,
                Password = userForRegister.Password,
                Name     = userForRegister.Name,
                Surname  = userForRegister.Surname
            };

            try
            {
                var isReg = _auth.Register(user, user.Password);

                if (isReg == "")
                {
                    throw new Exception();
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500));
            }

            var token = _auth.Login(user.Email, user.Password);

            return(Ok(new
            {
                token = tokenHandler.WriteToken(token)
            }));
        }
Exemplo n.º 3
0
        public async Task <UserForRegisterViewModel> Register(UserForRegisterViewModel user)
        {
            var registerUser = _mapper.Map <User>(user);
            var createUser   = await _authRepository.Register(registerUser, user.Password);

            var userToReturn = _mapper.Map <UserForRegisterViewModel>(createUser);

            return(userToReturn);
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Register([FromBody] UserForRegisterViewModel UserForRegisterVM)
        {
            var userMap = _mapper.Map <User>(UserForRegisterVM);
            // if( await _repo.EmailExist(UserForRegisterVM.Email) == true) return BadRequest("Email Exist!");
            var result = await _userManager.CreateAsync(userMap, UserForRegisterVM.Password);

            if (result.Succeeded)
            {
                var userToReturn = _mapper.Map <UserToReturnViewModel>(userMap);
                return(Ok(userToReturn));
            }
            return(BadRequest(result.Errors));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Register([FromBody] UserForRegisterViewModel userForRegisterViewModel)
        {
            var userApp        = _mapper.Map <User>(userForRegisterViewModel);
            var identityResult = await _userManager.CreateAsync(userApp, userForRegisterViewModel.Password);

            if (identityResult.Succeeded)
            {
                await _userManager.AddToRoleAsync(userApp, Constants.RoleNameNormalUser);

                var userToReturn = _mapper.Map <UserForListViewModel>(userApp);
                return(Ok(userToReturn));
            }

            return(BadRequest(identityResult.Errors));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Register([FromBody] UserForRegisterViewModel user)
        {
            var username = user.UserName;

            if (await repo.UserExists(username))
            {
                return(BadRequest("User already exist!"));
            }
            var userToCreate = mapper.Map <User>(user);
            var createdUser  = await repo.Register(userToCreate, user.Password);

            var userToReturn = mapper.Map <UserForDetailViewModel>(createdUser);

            return(CreatedAtRoute("GetUser", new { Controller = "Users", id = createdUser.Id }, userToReturn));
        }
Exemplo n.º 7
0
        public async Task <IActionResult> Register([FromBody] UserForRegisterViewModel register)
        {
            CustomerValidator customerValidator = new CustomerValidator();
            ValidationResult  resultt           = customerValidator.Validate(register);

            if (!resultt.IsValid)
            {
                return(BadRequest(resultt.Errors));
            }
            try
            {
                if (ModelState.IsValid)
                {
                    var user = new User
                    {
                        Email    = register.Email,
                        UserName = register.Email,
                    };
                    var isPrimaryEmailExist = await _userManager.FindByEmailAsync(user.Email);

                    if (isPrimaryEmailExist != null)
                    {
                        return(BadRequest(register.ToResponse()));
                    }
                    IdentityResult result = await _userManager.CreateAsync(user, register.Password);

                    if (result.Succeeded)
                    {
                        var appuser = await _userManager.Users.FirstOrDefaultAsync(x => x.UserName == user.UserName);
                        await AssignedMemberRoleRole(appuser);
                        await AssignedUserClaim(appuser);

                        return(Ok(register.ToResponse()));
                    }
                    return(BadRequest(register.ToResponse()));
                }
            }
            catch (Exception e)
            {
                if (e is ApplicationException)
                {
                    return(BadRequest(register.ToResponse()));
                }
            }
            return(BadRequest(register.ToResponse()));
        }
Exemplo n.º 8
0
        public async Task <IActionResult> Register(UserForRegisterViewModel userForRegisterViewModel)
        {
            userForRegisterViewModel.Username = userForRegisterViewModel.Username.ToLower();

            if (await _repo.UserExists(userForRegisterViewModel.Username))
            {
                return(BadRequest("Username already exists"));
            }

            var userToCreate = new User()
            {
                Username = userForRegisterViewModel.Username,
            };

            var createdUser = await _repo.Register(userToCreate, userForRegisterViewModel.Password);

            return(StatusCode(201));
        }
Exemplo n.º 9
0
        public async Task <IActionResult> Register(UserForRegisterViewModel userForRegisterViewModel)
        {
            // check username is unique
            string username = userForRegisterViewModel.Username.ToLower().Trim();

            if (await _authRepository.UserExists(username))
            {
                return(BadRequest("Username already exists"));
            }

            User userToCreate = new User()
            {
                Username = username
            };

            User createdUser = await _authRepository.Register(userToCreate, userForRegisterViewModel.Password);

            return(StatusCode(201));
        }
Exemplo n.º 10
0
        [HttpPost("register")] //<host>/api/auth/register
        public async Task <IActionResult> Register([FromBody] UserForRegisterViewModel userForRegister)
        {
            // validate request
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            userForRegister.Username = userForRegister.Username.ToLower(); //Convert username to lower case before storing in database.

            if (await _authService.UserExists(userForRegister.Username))
            {
                return(BadRequest(_errorLocalizer["UserExists"].Value));
            }

            await _authService.Register(userForRegister);

            return(StatusCode(201));
        }
Exemplo n.º 11
0
        //Register([FromBody] string username, string password ), but we can use ViewModel to Viewing the properties which we want.
        public async Task <IActionResult> Register([FromBody] UserForRegisterViewModel userForRegisterVM)
        {
            //If we using that ApiController, we don't need to use model state validation or [FromBody]
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            //<Destination>(Source)
            var userToCreate = _mapper.Map <User>(userForRegisterVM);
            var result       = await _userManager.CreateAsync(userToCreate, userForRegisterVM.Password);

            var userToReturn = _mapper.Map <UserForDetailedViewModel>(userToCreate);

            if (result.Succeeded)
            {
                return(CreatedAtRoute("GetUser", new { Controller = "Users", id = userToCreate.Id }, userToReturn));
            }

            return(BadRequest(result.Errors));
        }
Exemplo n.º 12
0
        public async Task <IActionResult> Register(UserForRegisterViewModel userForRegisterViewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    byte[] passwordHash, passwordSalt;

                    CreatePasswordHash(userForRegisterViewModel.Password, out passwordHash, out passwordSalt);

                    var userToCreate = new User
                    {
                        UserName     = userForRegisterViewModel.UserName.ToLower(),
                        PasswordHash = passwordHash,
                        PasswordSalt = passwordSalt,
                        Email        = userForRegisterViewModel.Email.ToLower()
                    };

                    await _uow.Users.AddAsync(userToCreate);

                    var result = await _uow.SaveAsync();

                    if (result > 0)
                    {
                        TempData["Message"] = "Registered Successfully";
                        TempData["Status"]  = "success";
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message, ex.StackTrace);
                TempData["Message"] = "Failed to register";
                TempData["Status"]  = "danger";
            }

            return(RedirectToAction(nameof(Register)));
        }
Exemplo n.º 13
0
        public async Task <IActionResult> Post([FromBody] UserForRegisterViewModel userForRegister)
        {
            var tokenHandler = new JwtSecurityTokenHandler();

            var user = new User
            {
                Email    = userForRegister.Email,
                Password = userForRegister.Password,
                Name     = userForRegister.Name,
                Surname  = userForRegister.Surname,
            };

            try
            {
                var isReg = _auth.Register(user, user.Password, userForRegister.RoleName);

                if (isReg == "")
                {
                    throw new Exception();
                }
            }
            catch (Exception)
            {
                return(StatusCode(500));
            }

            var    token    = _auth.Login(user.Email, user.Password);
            string roleName = token.Role.Name;
            Guid   userId   = token.UserID;
            string name     = token.Name;

            //return Ok(new
            //{
            //    token = tokenHandler.WriteToken(token)
            //});
            return(Ok(jwtHandler.Create(userId, roleName, name)));
        }
Exemplo n.º 14
0
        public async Task <IActionResult> Register(UserForRegisterViewModel userForRegister)
        {
            userForRegister.UserName = userForRegister.UserName.ToLower();
            var userToCreate = _mapper.Map <User>(userForRegister);

            userToCreate.Id        = Guid.NewGuid().ToString();
            userToCreate.TableName = await _singleton.userRepository.GetUserOrdersTableOnRegister(userToCreate.Id);

            var result = await _userManager.CreateAsync(userToCreate, userForRegister.Password);

            var    userToReurn = _mapper.Map <UserForListDto>(userToCreate);
            string tblName     = string.Empty;

            if (result.Succeeded)
            {
                ///await _singleton.userRepository.CreateUserOrdersTable(userToCreate.Id);
                var resultRole = _userManager.AddToRoleAsync(userToCreate, "User").Result;

                //await signInManager.SignInAsync(user, isPersistent: false);

                return(StatusCode(201));
            }
            return(BadRequest("User already exists"));
        }