public async Task <IActionResult> Register([FromBody] AdminRegistrationViewModel registerVM) { try { if (await _repo.UserExists(registerVM.Username)) { ModelState.AddModelError("Username", "Username is already exists."); } if (!ModelState.IsValid) { return(Json(BadRequest(ModelState))); } registerVM.Username = registerVM.Username.ToLower(); registerVM.Email = registerVM.Email.ToLower(); var adminToCreate = new Admin { Username = registerVM.Username, Email = registerVM.Email }; await _repo.Register(adminToCreate, registerVM.Password); return(Json(StatusCode(201))); } catch (Exception ex) { return(Json(BadRequest(ex))); } }
private async Task <AdminRegistrationViewModel> GetModelData(AdminRegistrationViewModel model) { var competentAuthorities = EnumHelper.GetValues(typeof(UKCompetentAuthority)) .Select(p => new SelectListItem() { Text = p.Value, Value = p.Key.ToString() }); model.CompetentAuthorities = new SelectList(competentAuthorities, "Value", "Text"); string token = User.GetAccessToken(); if (string.IsNullOrWhiteSpace(token)) { var tokenResponse = await oauthClientCredentialClient().GetClientCredentialsAsync(); token = tokenResponse.AccessToken; } var result = await client.SendAsync(token, new GetLocalAreas()); model.Areas = new SelectList(result.Select(area => new SelectListItem { Text = area.Name, Value = area.Id.ToString() }), "Value", "Text"); return(model); }
public async Task <ActionResult> CreateAdmin(AdminRegistrationViewModel model) { if (ModelState.IsValid) { var _firstname = model.FirstName; var _lastname = model.LastName; var _password = model.Password; var _email = model.Email; var _confmessage = "Now the Admin will have to confirm their email and they will offically be admins."; var user = new ApplicationUser { UserName = _email, Email = _email }; var UserManager = new UserManager <ApplicationUser>(new UserStore <ApplicationUser>(context)); var result = await UserManager.CreateAsync(user, _password); if (result.Succeeded) { //string callbackUrl = await SendEmailConfirmationTokenAsync(user.Id, _confmessage, _firstname); var special_user = new BTTUser { FirstName = _firstname, LastName = _lastname, ASPNetIdentityID = user.Id }; BeyondTheTutorContext db = new BeyondTheTutorContext(); var sub_user = new Admin(); sub_user.BTTUser = special_user; db.BTTUsers.Add(special_user); db.Admins.Add(sub_user); UserManager.AddToRole(user.Id, "Admin"); await db.SaveChangesAsync(); TempData["created"] = "You have successfully created an admin. They will have to confirm their email to access administrator privilages."; return(RedirectToAction("Index", "AllUsers")); } TempData["error"] = "Adding admin failed. Please check with the database administrator for further help!"; AddErrors(result); return(View(model)); } // If we got this far, something failed, redisplay form TempData["error"] = "Something went wrong! please check if you did everything correctly."; return(View(model)); }
private async Task<AdminRegistrationViewModel> GetModelData(AdminRegistrationViewModel model) { var competentAuthorities = EnumHelper.GetValues(typeof(UKCompetentAuthority)) .Select(p => new SelectListItem() { Text = p.Value, Value = p.Key.ToString() }); model.CompetentAuthorities = new SelectList(competentAuthorities, "Value", "Text"); var result = await client.SendAsync(User.GetAccessToken(), new GetLocalAreas()); model.Areas = new SelectList(result.Select(area => new SelectListItem { Text = area.Name, Value = area.Id.ToString() }), "Value", "Text"); return model; }
public async Task <ActionResult> Register(AdminRegistrationViewModel model) { if (!ModelState.IsValid) { return(View(await GetModelData(model))); } var adminRegistrationData = new AdminRegistrationData { Email = model.Email, FirstName = model.Name, Surname = model.Surname, Password = model.Password, ConfirmPassword = model.ConfirmPassword }; try { var response = await oauthClientCredentialClient().GetClientCredentialsAsync(); var userId = await client.Registration.RegisterAdminAsync(response.AccessToken, adminRegistrationData); var signInResponse = await oauthClient().GetAccessTokenAsync(model.Email, model.Password); authenticationManager.SignIn(signInResponse.GenerateUserIdentity()); var emailSent = await client.Registration.SendEmailVerificationAsync(signInResponse.AccessToken, new EmailVerificationData { Url = Url.Action("AdminVerifyEmail", "Registration", null, Request.Url.Scheme) }); await client.SendAsync(signInResponse.AccessToken, new CreateInternalUser(userId, model.JobTitle, model.LocalAreaId.GetValueOrDefault(), model.CompetentAuthority.GetValueOrDefault())); return(RedirectToAction("AdminEmailVerificationRequired")); } catch (ApiBadRequestException ex) { this.HandleBadRequest(ex); if (ModelState.IsValid) { throw; } } return(View(await GetModelData(model))); }
public async Task<ActionResult> Register(AdminRegistrationViewModel model) { if (!ModelState.IsValid) { return View(await GetModelData(model)); } var adminRegistrationData = new AdminRegistrationData { Email = model.Email, FirstName = model.Name, Surname = model.Surname, Password = model.Password, ConfirmPassword = model.ConfirmPassword }; try { var userId = await client.Registration.RegisterAdminAsync(adminRegistrationData); var signInResponse = await oauthClient().GetAccessTokenAsync(model.Email, model.Password); authenticationManager.SignIn(signInResponse.GenerateUserIdentity()); var emailSent = await client.Registration.SendEmailVerificationAsync(signInResponse.AccessToken, new EmailVerificationData { Url = Url.Action("AdminVerifyEmail", "Registration", null, Request.Url.Scheme) }); await client.SendAsync(signInResponse.AccessToken, new CreateInternalUser(userId, model.JobTitle, model.LocalAreaId.GetValueOrDefault(), model.CompetentAuthority.GetValueOrDefault())); return RedirectToAction("AdminEmailVerificationRequired"); } catch (ApiBadRequestException ex) { this.HandleBadRequest(ex); if (ModelState.IsValid) { throw; } } return View(await GetModelData(model)); }
public async Task <ActionResult> RegisterAdmin(AdminRegistrationViewModel model) { if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { var currentUser = UserManager.FindByName(user.UserName); var roleresult = UserManager.AddToRole(currentUser.Id, "Admin"); return(RedirectToAction("CreateAdminSuccess", "Account")); } } // If we got this far, something failed return(RedirectToAction("CreateAdminFail", "Account")); }
private static AdminRegistrationViewModel GetValidRegisterViewModel() { const string ValidEmail = "*****@*****.**"; const string ValidPassword = "******"; const string ValidName = "ValidName"; const string ValidSurname = "ValidSurname"; const UKCompetentAuthority ValidCA = UKCompetentAuthority.England; const string ValidJobTitle = "Title"; Guid validLocalAreaId = new Guid("BA16D091-6C2A-410A-84CE-8689D2CE2EFF"); var validRegisterViewModel = new AdminRegistrationViewModel { Email = ValidEmail, Password = ValidPassword, ConfirmPassword = ValidPassword, Name = ValidName, Surname = ValidSurname, CompetentAuthority = ValidCA, JobTitle = ValidJobTitle, LocalAreaId = validLocalAreaId }; return(validRegisterViewModel); }
private static AdminRegistrationViewModel GetValidRegisterViewModel() { const string ValidEmail = "*****@*****.**"; const string ValidPassword = "******"; const string ValidName = "ValidName"; const string ValidSurname = "ValidSurname"; const UKCompetentAuthority ValidCA = UKCompetentAuthority.England; const string ValidJobTitle = "Title"; Guid validLocalAreaId = new Guid("BA16D091-6C2A-410A-84CE-8689D2CE2EFF"); var validRegisterViewModel = new AdminRegistrationViewModel { Email = ValidEmail, Password = ValidPassword, ConfirmPassword = ValidPassword, Name = ValidName, Surname = ValidSurname, CompetentAuthority = ValidCA, JobTitle = ValidJobTitle, LocalAreaId = validLocalAreaId }; return validRegisterViewModel; }