public async Task <IActionResult> Login(UserRegisterDto userLogin)
        {
            var userFromDb = await _userService.Login(userLogin.Username.ToLower(), userLogin.Password);

            if (userFromDb == null)
            {
                return(Unauthorized());
            }

            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, userFromDb.Id.ToString()),
                new Claim(ClaimTypes.Name, userFromDb.Username)
            };

            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtSecret));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var tokenDescriptor = new SecurityTokenDescriptor()
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(5),
                SigningCredentials = creds,
            };
            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(new
            {
                token = tokenHandler.WriteToken(token)
            }));
        }
Exemple #2
0
        public async Task <UserRegisteredDto> RegisterUserAsync(UserRegisterDto userRegisterDto)
        {
            var existingUser = await this._userManager.FindByEmailAsync(userRegisterDto.Email);

            if (existingUser != null)
            {
                return(new UserRegisteredDto
                {
                    Succeeded = false,
                    Error = AccountServiceConstants.UserWithMailExist,
                });
            }

            var newUser     = _mapper.Map <User>(userRegisterDto);
            var createdUser = await this._userManager.CreateAsync(newUser, userRegisterDto.Password);

            var returnedUser = new UserRegisteredDto
            {
                Succeeded = createdUser.Succeeded
            };

            if (!createdUser.Succeeded)
            {
                returnedUser.Error = string.Join(" ", createdUser.Errors.Select(x => x.Description));
                returnedUser.User  = _mapper.Map <UserDto>(newUser);
                return(returnedUser);
            }

            await _userManager.AddToRoleAsync(newUser, Roles.User);

            returnedUser.User       = _mapper.Map <UserDto>(newUser);
            returnedUser.User.Roles = await _userManager.GetRolesAsync(newUser);

            return(returnedUser);
        }
        public async Task <IActionResult> Register(UserRegisterDto userRegisterDto)
        {
            if (ModelState.IsValid)
            {
                var user = _mapper.Map <User>(userRegisterDto);

                // добавляем пользователя
                var result = await _userManager.CreateAsync(user, userRegisterDto.Password);

                if (result.Succeeded)
                {
                    var currentUser = await _userManager.FindByEmailAsync(user.Email);

                    await _userManager.AddToRoleAsync(currentUser, "User");

                    await _emailService.SendAsync(SeccessRegisterSettings.subject,
                                                  SeccessRegisterSettings.CteateMessage(userRegisterDto), userRegisterDto.Email);

                    // установка куки
                    await _signInManager.SignInAsync(user, false);

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }
            }
            return(View(userRegisterDto));
        }
Exemple #4
0
        public IDataResult <UserResponseDto> Register(UserRegisterDto userRegisterDto)
        {
            HashingHelper.CreatePasswordHash(userRegisterDto.Password, out byte[] passwordHash, out byte[] passwordSalt);
            var user = new User
            {
                FirstName    = userRegisterDto.FirstName,
                LastName     = userRegisterDto.LastName,
                EMail        = userRegisterDto.EMail,
                PasswordHash = passwordHash,
                PasswordSalt = passwordSalt
            };

            var result = _userService.Add(user);

            var userResponse = new UserResponseDto
            {
                Id        = user.Id,
                FirstName = user.FirstName,
                LastName  = user.LastName,
                EMail     = user.EMail,
            };

            if (!result.Success)
            {
                userResponse.AccessToken = null;
                return(new ErrorDataResult <UserResponseDto>(userResponse));
            }

            userResponse.AccessToken = CreateAccessTokenMine(user);
            return(new SuccessDataResult <UserResponseDto>(Messages.UserRegistered, userResponse));
        }
Exemple #5
0
        /// <inheritdoc/>
        public async Task IsRegisterRequestValid(UserRegisterDto model)
        {
            var passwordList = _provider.GetBlacklistedPasswords();

            if (passwordList.Contains(model.Password))
            {
                throw new AccountCreationException("Provided password is too weak.");
            }

            var user = new IdentityUser
            {
                UserName = model.Username
            };

            foreach (var userValidator in _userManager.UserValidators)
            {
                var validationResult = await userValidator.ValidateAsync(_userManager, user);

                if (!validationResult.Succeeded)
                {
                    throw new AccountCreationException("One or multiple errors occured during account creation",
                                                       validationResult.Errors.Select(x => x.Description));
                }
            }
        }
Exemple #6
0
        public async Task <IActionResult> Register(UserRegisterDto userDto)
        {
            try
            {
                userDto.Dni = userDto.Dni;
                if (await _repo.UserExist(userDto.Dni))
                {
                    return(BadRequest("User already exists"));
                }

                User userToCreate = new User
                {
                    Name      = userDto.Name,
                    LastName  = userDto.LastName,
                    Dni       = userDto.Dni,
                    Email     = userDto.Email,
                    LastLogin = DateTime.Now
                };

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

                return(StatusCode(201));
            }
            catch (Exception)
            {
                return(StatusCode(500, "Registration failed."));
            }
        }
        public async Task <IActionResult> Register(UserRegisterDto model)
        {
            var userDb = await _authRepo.FindByUserNameAsync(model.UserName);

            if (userDb != null)
            {
                return(BadRequest("Username is already used."));
            }

            var userToCreate = _mapper.Map <User>(model);
            var result       = await _authRepo.CreateUserAsync(userToCreate, model.Password);

            if (!result.Succeeded)
            {
                return(BadRequest("Registration Failed."));
            }

            await _authRepo.AddToRoleAsync(userToCreate, RolePrefix.User);

            var accessToken = await CreateAccessTokenAsync(userToCreate);

            var refreshToken = await CreateRefreshTokenAsync(userToCreate.Id);

            await _uow.CompleteAsync();

            return(CreatedAtRoute("", new {
                accessToken = new JwtSecurityTokenHandler().WriteToken(accessToken),
                refreshToken = refreshToken.Value
            }));
        }
Exemple #8
0
        public async Task <ActionResult> Register(UserRegisterDto user)
        {
            if (this.ModelState.IsValid)
            {
                var createdUser = new UserIdentity {
                    UserName = user.Login, Email = user.Email
                };
                var result = await this.UserManager.CreateAsync(createdUser, user.Password);

                if (result.Succeeded)
                {
                    // return this.View(user);
                    return(this.RedirectToAction("Login", "Account"));
                }
                else
                {
                    foreach (var resultError in result.Errors)
                    {
                        this.ModelState.AddModelError(" ", resultError);
                    }
                }
            }

            return(this.View(user));
        }
Exemple #9
0
        public IActionResult Authenticate([FromBody] UserRegisterDto userRegisterDto)
        {
            var user = _userRepository.Authenticate(userRegisterDto.userName, userRegisterDto.password);

            if (user == null)
            {
                return(BadRequest(new { message = "Usuario o clave incorrecta." }
                                  ));
            }

            // Generate JWT
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(_appSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, user.idUser.ToString())
                }),
                Expires            = DateTime.UtcNow.AddHours(2),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token       = tokenHandler.CreateToken(tokenDescriptor);
            var tokenString = tokenHandler.WriteToken(token);

            // return basic user info (without password) and token to store client side
            return(Ok(new {
                idUser = user.idUser,
                name = user.name,
                lastName = user.lastName,
                username = user.userName,
                state = user.state,
                token = tokenString
            }));
        }
        public async Task <ActionResult <UserDto> > Register(UserRegisterDto userRegisterDto)
        {
            if (await UserExists(userRegisterDto.Email))
            {
                return(BadRequest("Email is taken"));
            }

            using var hmac = new HMACSHA512();

            var user = new User
            {
                FirstName    = userRegisterDto.FirstName,
                LastName     = userRegisterDto.LastName,
                Email        = userRegisterDto.Email.ToLower(),
                Phone        = userRegisterDto.Phone,
                PasswordHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(userRegisterDto.Password)),
                PasswordSalt = hmac.Key
            };


            _unitOfWork.UserRepository.Add(user);
            await _unitOfWork.Complete();

            return(new UserDto
            {
                Email = user.Email,
                Token = _tokenService.CreateToken(user)
            });
        }
Exemple #11
0
        public async Task RegisterAsync(UserRegisterDto userRegister)
        {
            var student = await _studentRepository.GetByAsync(st => st.StudentId == userRegister.StudentId);

            if (student == null)
            {
                throw new Exception("There is no such student in database");
            }
            if (student.UserId != null)
            {
                throw new Exception("This student has user");
            }

            var user = await _userRepository.GetByAsync(u => u.Login == userRegister.Login);

            if (user != null)
            {
                throw new Exception("User " + user.Login + " exist in database");
            }

            await _userRepository.CreateAsync(new User
            {
                Login    = userRegister.Login,
                Password = userRegister.Password,
                Role     = Roles.Student
            });

            var createdUser = await _userRepository.GetByAsync(u => u.Login == userRegister.Login);

            student.UserId = createdUser.Id;
            await _studentRepository.UpdateAsync(student);
        }
Exemple #12
0
        public HttpResponseMessage Register(UserRegisterDto register)
        {
            if (!ModelState.IsValid)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Geçerli kayıt yapınız!"));
            }

            User myUser = _userDal.GetEntitiesByFilter(x => x.Email == register.Email).FirstOrDefault();

            if (myUser == null)
            {
                myUser           = new User();
                myUser.FirstName = register.FirstName;
                myUser.LastName  = register.LastName;
                myUser.Email     = register.Email;
                myUser.Password  = register.Password;
                myUser.Phone     = register.Phone;
                string cerezKodu = Guid.NewGuid().ToString("n").Substring(0, 12);
                myUser.Cookie = cerezKodu;
                _userDal.Add(myUser);
                return(Request.CreateResponse(HttpStatusCode.OK, cerezKodu));
            }
            else
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, register.Email + " adresiyle kayıt olunmuş!"));
            }
        }
Exemple #13
0
        public async Task <ActionResult <UserDto> > Register(UserRegisterDto userRegisterDto)
        {
            if (await UserExists(userRegisterDto.Username))
            {
                return(BadRequest("Username already exists"));
            }

            var user = _mapper.Map <AppUser>(userRegisterDto);

            using var hmac = new HMACSHA512();

            user.UserName     = userRegisterDto.Username.ToLower();
            user.PasswordHash = hmac.ComputeHash(Encoding.UTF8.GetBytes(userRegisterDto.Password));
            user.PasswordSalt = hmac.Key;

            _context.Users.Add(user);
            await _context.SaveChangesAsync();

            return(new UserDto
            {
                Username = user.UserName,
                Token = _tokenService.CreateToken(user),
                Nickname = user.NickName
            });
        }
Exemple #14
0
        public async Task <User> Register(UserRegisterDto newuser, string password)
        {
            try
            {
                ServiceResponse <UserAuthDto> response = new ServiceResponse <UserAuthDto>();
                CreatePasswordHash(password, out byte[] passwordHash, out byte[] passwordSalt);

                User user = _mapper.Map <User>(newuser);

                if (await UserExists(user.Email) == true)
                {
                    return(null);
                }

                user.createdAt    = DateTime.Now;
                user.updatedAt    = DateTime.Now;
                user.PasswordHash = passwordHash;
                user.PasswordSalt = passwordSalt;

                await _context.Users.AddAsync(user);

                await _context.SaveChangesAsync();

                return(user);
            }
            catch (Exception ex)
            {
                _logger.Log(LogLevel.Error, ex.StackTrace);
                _logger.Log(LogLevel.Error, ex.Message);

                return(null);
            }
        }
Exemple #15
0
        public IActionResult Register(UserRegisterDto userRegisterDto)
        {
            var userExistsResult = _authService.UserWithEmailAlreadyExists(userRegisterDto.Email);

            if (!userExistsResult.Success)
            {
                return(BadRequest(new ErrorResult(userExistsResult.Message)));
            }

            var registerResult = _authService.Register(userRegisterDto);

            if (!registerResult.Success)
            {
                return(BadRequest(new ErrorResult(registerResult.Message)));
            }

            var tokenResult = _authService.CreateAccessToken(registerResult.Data);

            if (!tokenResult.Success)
            {
                return(BadRequest(new ErrorResult(tokenResult.Message)));
            }

            return(Ok(new SuccessDataResult <AccessToken>(tokenResult.Data, registerResult.Message)));
        }
Exemple #16
0
        public async Task <User> Register(UserRegisterDto userResgister)
        {
            byte[] passwordHash, passwordSalt;

            var user = new User
            {
                Email     = userResgister.Email,
                UserType  = userResgister.UserType,
                FirstName = userResgister.FirstName,
                LastName  = userResgister.LastName
            };

            if (user.UserType != Utility.BaseEnums.UserType.Teacher)
            {
                user.Status = Utility.BaseEnums.UserStatus.Approved;
            }
            else
            {
                user.Status = Utility.BaseEnums.UserStatus.Pending;
            }

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

            user.PasswordHash = passwordHash;
            user.PasswordSalt = passwordSalt;

            await _dbContext.Users.AddAsync(user);

            await _dbContext.SaveChangesAsync();

            return(user);
        }
        public async Task <AppIdentityResultWrapper> AddUserAsync(UserRegisterDto userToRegister)
        {
            var            preparedUser = PrepareUserForCreation(userToRegister);
            IdentityResult identityResult;
            var            resultWrapper = new AppIdentityResultWrapper
            {
                ModelErrors = new ModelStateDictionary()
            };

            if (String.IsNullOrEmpty(userToRegister.Password))
            {
                identityResult = await base.CreateAsync(preparedUser);
            }
            else
            {
                identityResult = await base.CreateAsync(preparedUser, userToRegister.Password);
            }

            if (identityResult.Succeeded)
            {
                resultWrapper.Succeeded = identityResult.Succeeded;
                resultWrapper.UserId    = preparedUser.Id;
                resultWrapper.UserName  = preparedUser.UserName;
                return(resultWrapper);
            }

            identityResult.Errors.ToList().ForEach(err => resultWrapper.ModelErrors.AddModelError("", err));
            return(resultWrapper);
        }
Exemple #18
0
        public async Task <UserLoginDto> Register(UserRegisterDto input)
        {
            var exist = await db.AnyAsync <User>(u => u.UserName == input.UserName);

            if (exist)
            {
                throw new Exception(string.Format("User {0} already existed", input.UserName));
            }

            User user = new User
            {
                UserName = input.UserName,
                PassWord = input.Password,
                Email    = input.Email
            };
            var userLogin = new UserLoginDto();

            try
            {
                await db.AddAsync <User>(user);

                userLogin.UserName = user.UserName;
                userLogin.Email    = user.Email;
                userLogin.Token    = Nam.ULTILS.JWTToken.AuthenticationToken.CreateJWTToken(user);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }
            return(userLogin);
        }
Exemple #19
0
        public async Task <ActionResult <UserDto> > Register(UserRegisterDto userRegisterDto)
        {
            if (CheckEmailExixtAsync(userRegisterDto.Email).Result.Value)
            {
                return(BadRequest(new ApiValidationErrorResponse {
                    Errors = new [] { "Email está en uso" }
                }));
            }

            var user = new AppUser {
                DisplayName = userRegisterDto.DisplayName,
                Email       = userRegisterDto.Email,
                UserName    = userRegisterDto.Email
            };

            var resut = await _userManager.CreateAsync(user, userRegisterDto.Password);

            if (!resut.Succeeded)
            {
                return(Unauthorized(new ApiResponse(400)));
            }

            return(new UserDto {
                DisplayName = user.DisplayName,
                Email = user.Email,
                Token = _tokenService.CreateToken(user)
            });
        }
Exemple #20
0
        public async Task <UserDto> Register(UserRegisterDto model)
        {
            User user = new User()
            {
                SecurityStamp = Guid.NewGuid().ToString(),
                UserName      = model.PhoneNumber,
                Email         = model.Email,
                PhoneNumber   = model.PhoneNumber,
                Name          = model.Name,
                BirthYear     = model.BirthYear,
                RegisterDate  = DateTime.Now,
                Gender        = model.Gender
            };
            var result = await _userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                if (!await _roleManager.RoleExistsAsync(UserRoles.Player))
                {
                    await _roleManager.CreateAsync(new IdentityRole(UserRoles.Player));
                }

                await _userManager.AddToRoleAsync(user, UserRoles.Player);
            }
            var userDto = _mapper.Map <UserDto>(user);

            return(userDto);
        }
Exemple #21
0
        public UserDisplayDto CreateUser(UserRegisterDto user)
        {
            User createdUser = new User
            {
                FirstName    = user.FirstName,
                LastName     = user.LastName,
                Email        = user.Email,
                PasswordHash = Util.HashHelper.GetMD5HashData(user.Password),
                UserName     = user.UserName,
                CreatedOn    = DateTime.Now
            };
            LMSEntities    context        = new LMSEntities();
            UserRepository userRepository = new UserRepository(context);

            createdUser = userRepository.Add(createdUser);

            UserDisplayDto displayUser = new UserDisplayDto
            {
                UserName  = user.UserName,
                FirstName = user.FirstName,
                LastName  = user.LastName,
                Email     = user.Email,
            };

            return(displayUser);
        }
        public async Task <ActionResult> Register([FromBody] UserRegisterDto userRegister)
        {
            if (!ModelState.IsValid)
            {
                return(CustomResponse(ModelState));
            }

            var user = new ApplicationUser
            {
                FirstName      = userRegister.FirstName,
                LastName       = userRegister.LastName,
                UserName       = userRegister.Email,
                Email          = userRegister.Email,
                EmailConfirmed = true
            };

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

            if (result.Succeeded)
            {
                return(CustomResponse(await _authenticationService.GenerateJWT(userRegister.Email)));
            }

            foreach (var error in result.Errors)
            {
                AddProccessError(error.Description);
            }

            return(CustomResponse());
        }
        public async Task <IActionResult> Register([FromBody] UserRegisterDto register,
                                                   [FromQuery] RegisterParams registerParams)
        {
            if (await _authRepo.UserExist(register.Username))
            {
                ModelState.AddModelError("Username", "Username Already Exist");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            User newUser = new User
            {
                Username  = register.Username,
                FirstName = register.FirstName,
                LastName  = register.LastName,
                Phone     = register.Phone,
                Email     = register.Email
            };

            User createdUser = await _authRepo.Register(newUser, register.Password);

            return(StatusCode(201));
        }
Exemple #24
0
        public async Task <Guid> Create(UserRegisterDto userRegisterDto)
        {
            var user = userBuilder.Build(userRegisterDto);
            await userDataService.AddAsync(user);

            return(user.Id);
        }
Exemple #25
0
        public async Task <ServiceResponse <string> > Register(UserRegisterDto userRegisterDto)
        {
            if (await UserExists(userRegisterDto.Username))
            {
                return(ResponseResult.Failure <string>("User already exists"));
            }

            CreatePasswordHash(userRegisterDto.Password, out byte[] passwordHash, out byte[] passwordSalt);

            User user = new User
            {
                Id           = Guid.NewGuid(),
                Username     = userRegisterDto.Username,
                PasswordHash = passwordHash,
                PasswordSalt = passwordSalt
            };

            _db.Users.Add(user);

            await _db.SaveChangesAsync();

            var token = CreateToken(user);

            return(ResponseResult.Success(token));
        }
        public async Task <IActionResult> Register([FromBody] UserRegisterDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (model.Password != model.RePassword)
            {
                return(BadRequest("Password and RePassword not match"));
            }

            model.Username = model.Username.ToLower();

            if (await this._authService.UserExists(model.Username))
            {
                return(BadRequest("Username already exists"));
            }

            var userToCreate = _mapper.Map <User>(model);
            var createdUser  = await this._authService.Register(userToCreate, model.Password);

            var userToReturn = _mapper.Map <UserForDetailDto>(createdUser);

            return(StatusCode(201));
        }
Exemple #27
0
        public async Task <IActionResult> Register([FromBody] UserRegisterDto userRegisterDto)
        {
            // check if the user exists
            if (await _authRepository.UserExits(userRegisterDto.UserName))
            {
                ModelState.AddModelError(userRegisterDto.UserName, "Username already exits");
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var userToCreate = new User
            {
                UserName = userRegisterDto.UserName,
                UserRole = userRegisterDto.UserRole
                           // Other Information Regarding to User
            };

            // Create user
            var createdUser = await _authRepository.Register(userToCreate, userRegisterDto.Password);

            return(StatusCode(201));
        }
Exemple #28
0
        public async Task <IActionResult> Login(UserRegisterDto UserLoginDto)
        {
            var userFromRepo = await _repo.Login(UserLoginDto.Username.ToLower(), UserLoginDto.Password);

            if (userFromRepo == null)
            {
                return(Unauthorized());
            }

            var claims = new[]
            {
                new Claim(ClaimTypes.NameIdentifier, userFromRepo.Id.ToString()),
                new Claim(ClaimTypes.Name, userFromRepo.Username)
            };

            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config.GetSection("AppSettings:Token").Value));

            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature);

            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(1),
                SigningCredentials = creds
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(tokenDescriptor);

            return(Ok(new {
                token = tokenHandler.WriteToken(token)
            }));
        }
Exemple #29
0
        public async Task <IActionResult> Register([FromBody] UserRegisterDto user)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                if (!user.ConfirmPassword.Equals(user.Password))
                {
                    return(BadRequest("Your passwords are not equals."));
                }

                var result = await _userService.Register(user);

                if (!result)
                {
                    return(BadRequest("Register is unsuccessful."));
                }
                return(Ok());
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, "Database Failure"));
            }
        }
Exemple #30
0
        public UserDisplayDto CreateUser(UserRegisterDto user)
        {
            User createdUser = new User
            {
                FirstName    = user.FirstName,
                LastName     = user.LastName,
                Email        = user.Email,
                PasswordHash = Util.HashHelper.GetMD5HashData(user.Password),
                UserName     = user.UserName,
                CreatedOn    = DateTime.Now
            };

            createdUser = _userRepository.Add(createdUser);
            if (createdUser != null)
            {
                return(AutoMapper.Mapper.Map <User, UserDisplayDto>(createdUser));
            }
            UserDisplayDto displayUser = new UserDisplayDto
            {
                UserName  = user.UserName,
                FirstName = user.FirstName,
                LastName  = user.LastName,
                Email     = user.Email,
            };

            return(displayUser);
        }