public AccountController(SignInManager <IgniteUser> signInManager, UserManager <IgniteUser> userManager, IgniteContext context, IEmailSender emailSender, ILogger <AccountController> logger, RoleManager <IgniteRole> roleManager, IgniteUser igniteUser) { _signInManager = signInManager; _userManager = userManager; _context = context; _emailSender = emailSender; _logger = logger; _roleManager = roleManager; _igniteUser = igniteUser; }
public IViewComponentResult Invoke() { var users = _context.IgniteUsers.AsNoTracking(); var igniteUserApplications = _context.IgniteUserApplications.AsNoTracking(); var depts = _context.Departments.AsNoTracking(); // inner join on dept and user users.Include(ig => ig.Department); List <IgniteUser> igUsers = users.ToList(); List <Department> departments = depts.ToList(); IgniteUser usr = new IgniteUser(); IgniteUserApplication app = new IgniteUserApplication(); Department dept = new Department(); foreach (var m in igUsers) { usr = m; dept = m.Department; igUsers.Add(usr); departments.Add(dept); } var joinRes = (from i in igUsers join d in departments on i.FKDepartmentId equals d.DepartmentId select new IgniteUserReportView { AppUserId = i.Id, FirstName = i.FirstName, LastName = i.LastName, DepartmentId = d.DepartmentId, DepartmentName = d.DepartmentName }).ToList(); IgniteUserReportView vm = new IgniteUserReportView() { FirstName = usr.FirstName, LastName = usr.LastName, LinkClicked = usr.LinkClicked, DepartmentId = dept.DepartmentId, DepartmentName = dept.DepartmentName }; //var viewName = isNullOrEmptyViewName ?? DefaultViewName : viewName return(View(igUsers)); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { var user = new IgniteUser { UserName = Input.UserName, NormalizedUserName = Input.UserName, Email = Input.Email, IgniteEmail = Input.Email, NormalizedEmail = Input.Email, FirstName = Input.FirstName, LastName = Input.LastName, IsInternalUser = true, HiredDate = DateTime.Now }; if (!Input.IsAdmin) { user.EmailConfirmed = true; } var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { if (!await _roleManager.RoleExistsAsync(UserRole.AdminUser)) { await _roleManager.CreateAsync(new IgniteRole(UserRole.AdminUser)); } if (!await _roleManager.RoleExistsAsync(UserRole.HR)) { await _roleManager.CreateAsync(new IgniteRole(UserRole.HR)); } if (!await _roleManager.RoleExistsAsync(UserRole.ManagerUser)) { await _roleManager.CreateAsync(new IgniteRole(UserRole.ManagerUser)); } if (!await _roleManager.RoleExistsAsync(UserRole.RegEmp)) { await _roleManager.CreateAsync(new IgniteRole(UserRole.RegEmp)); } if (Input.IsAdmin) { await _userManager.AddToRoleAsync(user, UserRole.AdminUser); } else { await _userManager.AddToRoleAsync(user, UserRole.RegEmp); await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } await _userManager.AddToRoleAsync(user, UserRole.AdminUser); _logger.LogInformation("User created a new account with password"); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Page("/Confirm/ConfirmEmail", pageHandler: null, values: new { userId = user.Id, code = code }, protocol: Request.Scheme); await _emailSender.SendEmailAsync(Input.Email, "Please confirm email", $"Please confirm your account by <a href='{ HtmlEncoder.Default.Encode(callbackUrl) }'>Click Here</a>."); //_context.IgniteUserApplications.Add(); await _context.SaveChangesAsync(); return(LocalRedirect(returnUrl)); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } return(Page()); }
// GET: /<controller>/ public async Task <IActionResult> Register([FromBody] RegisterViewComponent model) { try { DateTime?date = null; var user = new IgniteUser { UserName = model.Input.UserName, NormalizedUserName = model.Input.UserName, Email = model.Input.Email, NormalizedEmail = model.Input.Email, IgniteEmail = model.Input.Email, FirstName = model.Input.FirstName, MiddleInitial = model.Input.MiddleInitial, LastName = model.Input.LastName, FirstNameLastName = string.Format("{0} {1} {2}", model.Input.FirstName, model.Input.MiddleInitial, model.Input.LastName), HiredDate = DateTime.Today, TermDate = date, ApplicationApprovalDate = date }; if (ModelState.IsValid) { var nameFormatter = string.Format("{0} {1}", user.FirstName, user.LastName); var claimsIdentity = new ClaimsIdentity(new[] { new Claim(ClaimTypes.NameIdentifier, nameFormatter), }); if (!model.Input.IsAdmin) { user.EmailConfirmed = true; } var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { if (!await _roleManager.RoleExistsAsync(UserRole.AdminUser)) { await _roleManager.CreateAsync(new IgniteRole(UserRole.AdminUser)); } if (!await _roleManager.RoleExistsAsync(UserRole.HR)) { await _roleManager.CreateAsync(new IgniteRole(UserRole.HR)); } if (!await _roleManager.RoleExistsAsync(UserRole.ManagerUser)) { await _roleManager.CreateAsync(new IgniteRole(UserRole.ManagerUser)); } if (!await _roleManager.RoleExistsAsync(UserRole.RegEmp)) { await _roleManager.CreateAsync(new IgniteRole(UserRole.RegEmp)); } if (Input.IsAdmin) { var i = await _userManager.AddToRoleAsync(user, UserRole.AdminUser); } await _userManager.AddToRoleAsync(user, UserRole.AdminUser); // _logger.LogInformation("User created a new"); #region Update Ignite User Types //var claims = new List<Claim>(); //{ // claims.Add(new Claim(ClaimTypes.Name, nameFormatter)); // claims.Add(new Claim(ClaimTypes.Role, "")); //}; var claims = new List <Claim>(); if (await _userManager.IsInRoleAsync(user, UserRole.AdminUser) == true) { user.FkIgniteUserTypeId = 1; claims.Add(new Claim(ClaimTypes.Name, nameFormatter)); claims.Add(new Claim(ClaimTypes.Role, UserRole.AdminUser)); await _userManager.AddClaimsAsync(user, claims); } if (await _userManager.IsInRoleAsync(user, UserRole.HR) == true) { claims.Add(new Claim(ClaimTypes.Name, nameFormatter)); claims.Add(new Claim(ClaimTypes.Role, UserRole.AdminUser)); user.FkIgniteUserTypeId = 2; } if (await _userManager.IsInRoleAsync(user, UserRole.ManagerUser) == true) { claims.Add(new Claim(ClaimTypes.Name, nameFormatter)); claims.Add(new Claim(ClaimTypes.Role, UserRole.AdminUser)); user.FkIgniteUserTypeId = 3; } if (await _userManager.IsInRoleAsync(user, UserRole.RegEmp) == true) { claims.Add(new Claim(ClaimTypes.Name, nameFormatter)); claims.Add(new Claim(ClaimTypes.Role, UserRole.AdminUser)); user.FkIgniteUserTypeId = 4; } #endregion _logger.LogInformation("User createed a new account with password"); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Page("/Confirm/ConfirmEmail", pageHandler: null, values: new { userId = user.Id, code = code }, protocol: Request.Scheme); await _emailSender.SendEmailAsync(Input.Email, "Please confirm email", $"Please confirm your account by <a href='{ HtmlEncoder.Default.Encode(callbackUrl) }'>Click Here</a>."); await _signInManager.SignInAsync(user, isPersistent : false); await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme); await HttpContext.SignOutAsync(IdentityConstants.ApplicationScheme); //_context.IgniteUserApplications.Add(); await _context.SaveChangesAsync(); return(View("Login")); } } else { return(View(model.Input)); } } catch (Exception e) { Console.WriteLine(e); throw; } return(View()); }