示例#1
0
        public async Task <User> CreateUserAsync(User user)
        {
            user.Password = _passwordStorage.CreateHash(user.Password);
            var newUser = await UsersRepo.CreateUserAsync(_mapper.Map <UserEntity>(user));

            return(_mapper.Map <User>(newUser));
        }
        /// <summary>
        /// Register new user
        /// </summary>
        /// <param name="user"></param>
        public async Task <JsonWebToken> SignUp(CreateUser user)
        {
            user.Email = string.IsNullOrEmpty(user.Email) ? "" : user.Email.ToLower();
            var existingUser = (await _userRepository.Get(x => x.Email == user.Email)).FirstOrDefault();

            if (existingUser != null)
            {
                throw new ApplicationException("This email address is already in use by another account");
            }
            try
            {
                var userModel = new User()
                {
                    Id            = ObjectId.GenerateNewId().ToString(),
                    UId           = Guid.NewGuid(),
                    Email         = user.Email,
                    PasswordHash  = _encryptPassword.CreateHash(user.Password),
                    UserType      = user.UserRole.ToString(),
                    FirstName     = user.FirstName,
                    LastName      = user.LastName,
                    TermsAccepted = user.TermsConditionsAccepted,
                    CreatedOn     = DateTime.UtcNow,
                    IsDeleted     = false
                };
                await _userRepository.Add(userModel);

                var jsonWebToken = _jwtHandler.Create(userModel.Id, user.UserRole.ToString(), true);
                jsonWebToken.Username = user.Email;
                return(jsonWebToken);
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Register error - " + ex.Message);
            }
        }
        /// <summary>
        /// Register new user
        /// </summary>
        /// <param name="user"></param>
        public async Task <AuthenticationResult> SignUp(CreateUser user)
        {
            user.Email = string.IsNullOrEmpty(user.Email) ? "" : user.Email.ToLower();
            var existingUser = (await _userRepository.Get(x => x.Email == user.Email)).FirstOrDefault();

            if (existingUser != null)
            {
                return(new AuthenticationResult
                {
                    Success = false,
                    Message = "This email address is already in use by another account",
                });
            }
            try
            {
                var userModel = new User()
                {
                    Id           = ObjectId.GenerateNewId().ToString(),
                    Email        = user.Email,
                    PasswordHash = _encryptPassword.CreateHash(user.Password),
                    Name         = user.Name,
                    ProfilePhoto = "https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcTJ-mXuETtV9PelHdVOYG7yMwKVZpW1NGNpFwND484eFIxU8IBe",
                    CreatedOn    = DateTime.UtcNow,
                    IsDeleted    = false
                };
                await _userRepository.Add(userModel);

                var jsonWebToken = _jwtHandler.Create(userModel.Id);

                var userProfile = new UserView
                {
                    Id           = userModel.Id,
                    Name         = userModel.Name,
                    ProfilePhoto = userModel.ProfilePhoto
                };

                return(new AuthenticationResult
                {
                    Success = true,
                    Token = jsonWebToken,
                    User = userProfile
                });
            }
            catch (Exception ex)
            {
                return(new AuthenticationResult
                {
                    Success = false,
                    Message = "Register error - " + ex.Message,
                });
            }
        }
示例#4
0
        public async Task <IActionResult> Register([FromBody] LoginModel loginModel)
        {
            var login = new Login
            {
                Identity     = loginModel.Identity,
                PasswordHash = _passwordStorage.CreateHash(loginModel.Password),
                Role         = Role.Student
            };

            foreach (var teamMemberModel in loginModel.TeamMembers)
            {
                login.TeamMembers.Add(new TeamMember
                {
                    Login    = login,
                    MemberId = teamMemberModel.MemberId
                });
            }

            var createdLogin = await _loginRepository.AddAsync(login);

            return(Created("api/accounts/register", CreateLoginModel(createdLogin)));
        }
示例#5
0
        /// <summary>
        /// Register new user
        /// </summary>
        /// <param name="user"></param>
        public async Task <JsonWebToken> SignUp(CreateUser user)
        {
            try
            {
                if (user == null)
                {
                    throw new ApplicationException("Incomplete register request - user is null");
                }
                if (user.Email == null)
                {
                    throw new ApplicationException("Incomplete register request - user's email is null");
                }
                if (user.Password == null || user.Password.Length == 0)
                {
                    throw new ApplicationException("Incomplete register request - Password is null");
                }

                // hash password
                var passHash = _encryptPassword.CreateHash(user.Password);

                //var passHash = new PBKDF2(user.Password,SALT_BYTES,PBKDF2_ITERATIONS,"HMACSHA512");
                var UId      = Guid.NewGuid();
                var objectId = ObjectId.GenerateNewId().ToString();
                var login    = new Login()
                {
                    Id                     = objectId,
                    UId                    = UId,
                    Username               = user.Email,
                    PasswordHash           = passHash,
                    IsDisabled             = false,
                    EmailAddressAuthorized = true,
                    ExpiredOn              = DateTime.UtcNow.AddHours(24),
                    PasswordFormat         = PBKDF2_ITERATIONS,
                    TermsAccepted          = user.TermsConditionsAccepted
                };

                if (user.UserRole == "recruiter")
                {
                    var newRecruitor = new Recruiter()
                    {
                        Id        = objectId,
                        CreatedOn = DateTime.UtcNow,
                        IsDeleted = false,
                        UId       = UId,
                        Login     = login
                    };
                    newRecruitor.CompanyContact.Email = user.Email;
                    newRecruitor.CompanyContact.Name  = user.CompanyName;

                    await _recruitorRepository.Add(newRecruitor);

                    return(_jwtHandler.Create(newRecruitor.Id, user.UserRole, true));
                }
                else if (user.UserRole == "employer")
                {
                    var newEmployer = new Employer()
                    {
                        Id        = objectId,
                        CreatedOn = DateTime.UtcNow,
                        IsDeleted = false,
                        UId       = UId,
                        Login     = login,
                    };
                    newEmployer.CompanyContact.Email = user.Email;
                    newEmployer.CompanyContact.Name  = user.CompanyName;

                    await _employerRepository.Add(newEmployer);

                    return(_jwtHandler.Create(newEmployer.Id, user.UserRole, true));
                }
                else
                {
                    var newTalent = new User()
                    {
                        Id        = objectId,
                        FirstName = user.FirstName,
                        LastName  = user.LastName,
                        CreatedOn = DateTime.UtcNow,
                        IsDeleted = false,
                        UId       = UId,
                        Login     = login,
                    };

                    await _userRepository.Add(newTalent);

                    return(_jwtHandler.Create(newTalent.Id, user.UserRole, true));
                }
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Register error - " + ex.Message);
            }
        }
示例#6
0
        /// <summary>
        /// Register new customer
        /// </summary>
        /// <param name="user"></param>
        public async Task Register(SignUpPersonal user)
        {
            try
            {
                if (user == null)
                {
                    throw new ApplicationException("Incomplete register request - user is null");
                }
                if (user.EmailAddress == null)
                {
                    throw new ApplicationException("Incomplete register request - user's email is null");
                }
                if (user.Password == null || user.Password.Length == 0)
                {
                    throw new ApplicationException("Incomplete register request - Password is null");
                }
                var existingUser = _userRepository.Get(x => x.Login.Username == user.EmailAddress).FirstOrDefault();
                if (existingUser != null)
                {
                    throw new ApplicationException("Email address has been used in registration.");
                }

                // hash password
                var passHash = _encryptPassword.CreateHash(user.Password);

                //var passHash = new PBKDF2(user.Password,SALT_BYTES,PBKDF2_ITERATIONS,"HMACSHA512");
                var UId      = Guid.NewGuid();
                var objectId = ObjectId.GenerateNewId().ToString();
                var login    = new Login()
                {
                    Id                     = objectId,
                    UId                    = UId,
                    Username               = user.EmailAddress,
                    PasswordHash           = passHash,
                    IsDisabled             = true,
                    EmailAddressAuthorized = false,
                    EmailCode              = user.EmailCode,
                    ExpiredOn              = DateTime.UtcNow.AddHours(24),
                    PasswordFormat         = PBKDF2_ITERATIONS,
                    TermsAccepted          = user.TermsConditionsAccepted
                };

                var person = new User()
                {
                    Id          = objectId,
                    FirstName   = user.FirstName,
                    LastName    = user.LastName,
                    MobilePhone = user.MobileNumber,
                    CreatedOn   = DateTime.UtcNow,
                    IsDeleted   = false,
                    UId         = UId,
                    Login       = login,
                };

                await _userRepository.Add(person);
            }
            catch (Exception ex)
            {
                throw new ApplicationException("Register error - " + ex.Message);
            }
        }