コード例 #1
0
        public ActionResult Edit(int id, [Bind("FirstName,LastName,Email,Password,PhoneNumber,UserRoleId")] JobFinderUser jobFinderUserNewData)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    JobFinderUser targetUser = _usersRepository.findUserById(id);
                    targetUser.FirstName     = jobFinderUserNewData.FirstName;
                    targetUser.LastName      = jobFinderUserNewData.LastName;
                    targetUser.Email         = jobFinderUserNewData.Email;
                    targetUser.Password      = _usersRepository.sha256_hash(jobFinderUserNewData.Password);
                    targetUser.PhoneNumber   = jobFinderUserNewData.PhoneNumber;
                    targetUser.UserRoleId    = jobFinderUserNewData.UserRoleId;
                    targetUser.UserUpdatedAt = DateTime.Now;

                    _usersRepository.editUser(targetUser);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!_usersRepository.UserExists(jobFinderUserNewData.UserId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["UserRoleId"] = new SelectList(_dbContext.UserRoles, "UserRoleId", "RoleName", jobFinderUserNewData.UserRoleId);
            ViewBag.SelectedNav    = "Dashboard";
            return(View(jobFinderUserNewData));
        }
コード例 #2
0
        public ActionResult DeleteConfirmed(int id)
        {
            JobFinderUser jobFinderUser = _usersRepository.findUserById(id);

            _usersRepository.deleteUser(jobFinderUser, true);
            TempData["InfoMessage"] = $"User '{jobFinderUser.LastName} {jobFinderUser.FirstName}', with email address '{jobFinderUser.Email}' has been set as inactive and can not use the platform.";
            ViewBag.SelectedNav     = "Dashboard";
            return(RedirectToAction(nameof(Index)));
        }
コード例 #3
0
 public int addUser(JobFinderUser jobFinderUser)
 {
     jobFinderUser.Password      = sha256_hash(jobFinderUser.Password);
     jobFinderUser.UserAddedAt   = DateTime.Now;
     jobFinderUser.UserUpdatedAt = DateTime.Now;
     _dbContext.JobFinderUsers.Add(jobFinderUser);
     _dbContext.SaveChanges();
     return(jobFinderUser.UserId);
 }
コード例 #4
0
        public async Task <JobFinderUser> FindByEmailAsync(StringValues userEmail)
        {
            JobFinderUser result = null;

            if (userEmail.Count >= 1)
            {
                result = await _readOnlyUnitOfWork.GetRepository <JobFinderUser>().Query().FirstOrDefaultAsync(x => x.Email.ToLower() == userEmail[0].ToLower());
            }
            return(result);
        }
コード例 #5
0
 private async Task Handle(RegisterUserCommand command)
 {
     await HandleCommand(command, async uow =>
     {
         var userRepository = uow.GetRepository <JobFinderUser> ();
         var salt           = _passwordCryptoService.GenerateSalt();
         var passwordHash   = _passwordCryptoService.HashPassword(command.Password, salt);
         var user           = JobFinderUser.Create(Guid.NewGuid(), command.Name, command.Surname, command.Email, passwordHash, salt, UserType.Client);
         userRepository.Add(user);
         await userRepository.SaveChangesAsync();
     });
 }
コード例 #6
0
        public ActionResult UndoDelete(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            JobFinderUser jobFinderUser = _usersRepository.findUserById(id);

            _usersRepository.deleteUser(jobFinderUser, false);
            TempData["SuccessMessage"] = $"User '{jobFinderUser.LastName} {jobFinderUser.FirstName}', with email address '{jobFinderUser.Email}' has been set as active and can use the platform.";
            ViewBag.SelectedNav        = "Dashboard";
            return(RedirectToAction(nameof(Index)));
        }
コード例 #7
0
 private static async void SeedUser(string name,
                                    string surname,
                                    string email,
                                    string password,
                                    UserType userType,
                                    IPasswordCryptoService passwordCryptoService,
                                    JobFinderContext JobFinderContext)
 {
     var salt         = passwordCryptoService.GenerateSalt();
     var passwordHash = passwordCryptoService.HashPassword(password, salt);
     var user         = JobFinderUser.Create(Guid.NewGuid(), name, surname, email, passwordHash, salt, userType);
     await JobFinderContext.Set <JobFinderUser>().AddAsync(user);
 }
コード例 #8
0
 public void deleteUser(JobFinderUser user, bool status)
 {
     if (status)
     {
         user.IsActive = false;
     }
     else
     {
         user.IsActive = true;
     }
     _dbContext.JobFinderUsers.Update(user);
     _dbContext.SaveChanges();
 }
コード例 #9
0
        public async Task <bool> CheckPasswordAsync(JobFinderUser user, StringValues password)
        {
            var result = false;

            if (password.Count >= 1)
            {
                result = await _passwordCryptoService.IsCorrectAsync(password[0], user.Password, user.Salt);
            }

            if (result)
            {
                user.UpdateLastLoginDate();
                await _unitOfWork.GetRepository <JobFinderUser>().SaveChangesAsync();
            }
            return(result);
        }
コード例 #10
0
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            JobFinderUser jobFinderUser = _usersRepository.findUserById(id);

            if (jobFinderUser == null)
            {
                return(NotFound());
            }
            ViewBag.SelectedNav = "Dashboard";
            return(View(jobFinderUser));
        }
コード例 #11
0
        public ActionResult Unapprove(int id)
        {
            JobFinderUser targetUser = _usersRepository.findUserById(id);

            if (targetUser != null)
            {
                targetUser.IsApproved = false;
                _usersRepository.editUser(targetUser);
                ViewBag.SelectedNav     = "Dashboard";
                TempData["InfoMessage"] = $"The recruiter having email address '{targetUser.Email}' has been unapproved and can't authenticate in the platform.";
            }
            else
            {
                ViewBag.SelectedNav = "Dashboard";
                return(RedirectToAction("Index"));
            }
            return(RedirectToAction("Index"));
        }
コード例 #12
0
 public ActionResult Create([Bind("FirstName,LastName,Email,Password,PhoneNumber,UserRoleId")] JobFinderUser jobFinderUser)
 {
     if (ModelState.IsValid)
     {
         if (!_usersRepository.UserEmailExists(jobFinderUser.Email))
         {
             _usersRepository.addUser(jobFinderUser);
             ViewBag.SelectedNav = "Dashboard";
             return(RedirectToAction("Index"));
         }
         else
         {
             ModelState.AddModelError("", "Email already exists in database!");
         }
     }
     ViewBag.SelectedNav    = "Dashboard";
     ViewData["UserRoleId"] = new SelectList(_dbContext.UserRoles, "UserRoleId", "RoleName", jobFinderUser.UserRoleId);
     return(View(jobFinderUser));
 }
コード例 #13
0
 public ActionResult RegisterCandidate([Bind("FirstName, LastName, Email, Password, PhoneNumber")] JobFinderUser jobFinderUser)
 {
     if (ModelState.IsValid)
     {
         if (!_usersRepository.UserEmailExists(jobFinderUser.Email))
         {
             jobFinderUser.IsApproved = true;
             jobFinderUser.IsActive   = true;
             jobFinderUser.UserRoleId = 3;
             _usersRepository.addUser(jobFinderUser);
             ViewBag.Message = "Your account has been succesfully created. You may now log in.";
             return(RedirectToAction("Login"));
         }
         else
         {
             ModelState.AddModelError("", "Email already exists in database!");
         }
     }
     ViewBag.SelectedNav = "Register";
     return(View());
 }
コード例 #14
0
        public ActionResult RegisterRecruiter([Bind("FirstName, LastName, Email, Password, PhoneNumber, Name, Description, StartDate")] RecruiterRegisterViewModel recruiterRegisterViewModel)
        {
            if (ModelState.IsValid)
            {
                if (!_usersRepository.UserEmailExists(recruiterRegisterViewModel.Email))
                {
                    JobFinderUser jobFinderUser = new JobFinderUser
                    {
                        Password      = recruiterRegisterViewModel.Password,
                        FirstName     = recruiterRegisterViewModel.FirstName,
                        LastName      = recruiterRegisterViewModel.LastName,
                        Email         = recruiterRegisterViewModel.Email,
                        PhoneNumber   = recruiterRegisterViewModel.PhoneNumber,
                        UserAddedAt   = DateTime.Now,
                        UserUpdatedAt = DateTime.Now,
                        UserRoleId    = 2,
                        IsApproved    = false,
                        IsActive      = true
                    };

                    int newUserId = _usersRepository.addUser(jobFinderUser);

                    if (_companiesRepository.CompanyExistsByName(recruiterRegisterViewModel.Name))
                    {
                        Company company = _companiesRepository.GetCompanyByName(recruiterRegisterViewModel.Name);
                        _companyUsersRepository.AssignUserToCompany(new CompanyUser
                        {
                            UserId      = newUserId,
                            CKCompanyId = company.CompanyId
                        });

                        SendEmail(jobFinderUser.LastName + " " + jobFinderUser.FirstName, jobFinderUser.Email, company.Name);
                    }
                    else
                    {
                        Company company = new Company
                        {
                            Name        = recruiterRegisterViewModel.Name,
                            StartDate   = recruiterRegisterViewModel.StartDate,
                            Description = recruiterRegisterViewModel.Description
                        };

                        int newCompanyId = _companiesRepository.AddCompany(company);

                        _companyUsersRepository.AssignUserToCompany(new CompanyUser
                        {
                            UserId      = newUserId,
                            CKCompanyId = newCompanyId
                        });

                        SendEmail(jobFinderUser.LastName + " " + jobFinderUser.FirstName, jobFinderUser.Email, company.Name);
                    }
                    ViewBag.Message     = "Your account needs to be approved by the system administrator.";
                    ViewBag.SelectedNav = "Home";
                    return(Redirect("/"));
                }
                else
                {
                    ModelState.AddModelError("", "Email already exists in database!");
                }
            }
            ViewBag.SelectedNav = "Register";
            return(View());
        }
コード例 #15
0
 public void editUser(JobFinderUser targetUser)
 {
     _dbContext.Update(targetUser);
     _dbContext.SaveChanges();
 }