public async Task <ActionResult> Register(RegisterViewModel model) { if (this.ModelState.IsValid) { var user = new FimaUser { UserName = model.Username, Email = model.Email }; var result = await this.UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await this.SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); // Assign Role to user Here await this.UserManager.AddToRoleAsync(user.Id, model.UserRole); return(this.RedirectToAction("Index", "Home")); } this.ViewBag.Roles = new SelectList(this.roles.AllButAdmin()); this.AddErrors(result); } // If we got this far, something failed, redisplay form return(this.View(model)); }
private static void SeedAdmin( DbContext context, string administratorUsername, string administratorEmail, string administratorPassword) { // create roles for all other users here var roleStore = new Fima.Data.Models.FimaRoleStore(context); var roleManager = new RoleManager <FimaRole, int>(roleStore); if (roleManager.RoleExists(GlobalConstants.AdministratorRoleName)) { return; } var adminRole = new FimaRole { Name = GlobalConstants.AdministratorRoleName }; var guestRole = new FimaRole { Name = GlobalConstants.GuestRoleName }; var frontOfficeRole = new FimaRole { Name = GlobalConstants.FrontOfficeRoleName }; var backOfficeRole = new FimaRole { Name = GlobalConstants.BackOfficeRoleName }; var accauntingRole = new FimaRole { Name = GlobalConstants.AccountantRoleName }; var walletManagerRole = new FimaRole { Name = GlobalConstants.WalletManagerRoleName }; var riskManagerRole = new FimaRole { Name = GlobalConstants.RiskManagerRoleName }; roleManager.Create(adminRole); roleManager.Create(guestRole); roleManager.Create(frontOfficeRole); roleManager.Create(backOfficeRole); roleManager.Create(accauntingRole); roleManager.Create(walletManagerRole); roleManager.Create(riskManagerRole); var userStore = new Fima.Data.Models.FimaUserStore(context); var userManager = new UserManager <FimaUser, int>(userStore); var user = new FimaUser { UserName = administratorUsername, Email = administratorEmail, EmailConfirmed = true }; userManager.Create(user, administratorPassword); userManager.AddToRole(user.Id, adminRole.Name); context.SaveChanges(); }
public async Task <ActionResult> ExternalLoginConfirmation( ExternalLoginConfirmationViewModel model, string returnUrl) { if (this.User.Identity.IsAuthenticated) { return(this.RedirectToAction("Index", "Manage")); } if (this.ModelState.IsValid) { // Get the information about the user from the external login provider var info = await this.AuthenticationManager.GetExternalLoginInfoAsync(); if (info == null) { return(this.View("ExternalLoginFailure")); } var user = new FimaUser { UserName = model.Email, Email = model.Email }; var result = await this.UserManager.CreateAsync(user); if (result.Succeeded) { result = await this.UserManager.AddLoginAsync(user.Id, info.Login); if (result.Succeeded) { await this.SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(this.RedirectToLocal(returnUrl)); } } this.AddErrors(result); } this.ViewBag.ReturnUrl = returnUrl; return(this.View(model)); }