public void NullErrorListUsesDefaultError() { var result = new IdentityResult(null); Assert.False(result.Succeeded); Assert.Equal(1, result.Errors.Count()); Assert.Equal("An unknown failure has occured.", result.Errors.First()); }
public static void IsFailure(IdentityResult result, IdentityError error) { Assert.NotNull(result); Assert.False(result.Succeeded); Assert.Equal(error.Description, result.Errors.First().Description); Assert.Equal(error.Code, result.Errors.First().Code); }
public void VerifyDefaultConstructor() { var result = new IdentityResult(); Assert.False(result.Succeeded); Assert.Equal(1, result.Errors.Count()); Assert.Equal("An unknown failure has occured.", result.Errors.First()); }
public static IdentityResult AuthenticateIdentity(string url, string userName, string apiKey) { IdentityResult result = new IdentityResult(); // this is what we are sending string post_data = "{ \"auth\":{ \"RAX-KSKEY:apiKeyCredentials\":{ \"username\":\"YYYYYYYYYYYY\", \"apiKey\":\"XXXXXXXXXXXX\" } } }"; post_data = post_data.Replace("YYYYYYYYYYYY", userName); post_data = post_data.Replace("XXXXXXXXXXXX", apiKey); // this is where we will send it // create a request HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url); request.KeepAlive = false; request.ProtocolVersion = HttpVersion.Version10; request.Method = "POST"; // turn our request string into a byte stream byte[] postBytes = Encoding.ASCII.GetBytes(post_data); try { // this is important - make sure you specify type this way request.ContentType = "application/json"; request.ContentLength = postBytes.Length; Stream requestStream = request.GetRequestStream(); // now send it requestStream.Write(postBytes, 0, postBytes.Length); requestStream.Close(); // grab the response and print it out to the console along with the status code HttpWebResponse response = (HttpWebResponse)request.GetResponse(); result.reply = new StreamReader(response.GetResponseStream()).ReadToEnd(); // parse out the token ID and tenant ID string tokentext = "\"token\":{\"id\":\""; result.token = GetJsonValue(tokentext, result.reply, 32); string tenanttext = "\"tenant\":{\"id\":\""; result.tenant = GetJsonValue(tenanttext, result.reply, 7); string expirestext = "\"expires\":\""; string expiresat = GetJsonValue(expirestext, result.reply, 19); result.expires = DateTime.Parse(expiresat); return result; } catch (System.Net.WebException e) { MessageBox.Show(e.ToString(), "Authentication Failure", MessageBoxButtons.OK); } result.token = result.tenant = ""; return result; }
public async Task <AjaxResult> ConfirmEmail(ConfirmEmailDto dto) { if (!ModelState.IsValid) { return(new AjaxResult("邮箱激活失败:参数不正确", AjaxResultType.Error)); } User user = await _userManager.FindByIdAsync(dto.UserId.ToString()); if (user == null) { return(new AjaxResult("注册邮箱激活失败:用户不存在", AjaxResultType.Error)); } if (user.EmailConfirmed) { return(new AjaxResult("注册邮箱已激活,操作取消", AjaxResultType.Info)); } string code = UrlBase64ReplaceChar(dto.Code); IdentityResult result = await _userManager.ConfirmEmailAsync(user, code); return(result.ToOperationResult().ToAjaxResult()); }
public async Task <IActionResult> Delete(string id) { AppUser user = await userManager.FindByIdAsync(id); if (user != null) { IdentityResult result = await userManager.DeleteAsync(user); if (result.Succeeded) { TempData["poruka"] = $"Successfully deleted"; return(RedirectToAction("Index", "IdAdmin")); } else { AddErrorsFromResult(result); } } else { ModelState.AddModelError("", "User Not Found"); } return(View("~/Views/Identity/Admin/Index.cshtml", userManager.Users)); }
public async void CreateRestaurantUser(UserManager <IdentityUser> userManager) { const string restaurantEmail = "*****@*****.**"; const string password = "******"; if (userManager.FindByNameAsync(restaurantEmail).Result == null) { var user = new IdentityUser { UserName = restaurantEmail, Email = restaurantEmail }; IdentityResult result = userManager.CreateAsync (user, password).Result; if (result.Succeeded) { var claim = new Claim("Restaurant", "Yes"); userManager.AddClaimAsync(user, claim).Wait(); string token = await userManager.GenerateEmailConfirmationTokenAsync(user); userManager.ConfirmEmailAsync(user, token).Wait(); } } }
public async Task <IHttpActionResult> Register(RegisterBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = new User() { UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName }; IdentityResult result = await UserManager.CreateAsync(user, model.Password); if (!result.Succeeded) { return(GetErrorResult(result)); } return(Ok()); }
public async Task Given_failure_identityResult_When_ResetPassword_Returns_ResetPasswordConfirmationView() { //Given ApplicationUser user = new ApplicationUser() { Id = "5" }; var model = new ResetPasswordViewModel() { UserId = "5" }; _userRepository.Setup(x => x.GetUser(It.IsAny <string>())).Returns(user); DpapiDataProtectionProvider Null = null; DataProtectorTokenProvider <ApplicationUser> Null2 = null; _identityFacade.Setup(x => x.GetProvider(It.IsAny <string>())).Returns(Null); _identityFacade.Setup(x => x.GetUserTokenProvider(Null, It.IsAny <string>())).Returns(Null2); _userManager.Setup(x => x.GeneratePasswordResetTokenAsync(user.Id)).ReturnsAsync(string.Empty); _userManager.Setup(x => x.ResetPasswordAsync(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())). ReturnsAsync(IdentityResult.Failed()); //When var result = await _accountController.ResetPassword(model) as ViewResult; //Then Assert.NotNull(result); Assert.AreEqual(String.Empty, result.ViewName); Assert.IsInstanceOf <ResetPasswordViewModel>(result.Model); }
public async Task <ActionResult> ResetPassword(UserResetPasswordViewModel model) { if (!ModelState.IsValid) { return(View(model)); } AppUser user = await _userManager.FindByNameAsync(model.Email); if (user == null) { return(View(model)); } IdentityResult result = await _userManager.ResetPasswordAsync(user.Id, model.Code, model.NewPassword); if (result.Succeeded) { return(View("ResetPasswordConfirmation")); } AddErrorsFromResult(result); return(View(model)); }
protected void MUserInRolesGridView_CustomCallback(object sender, DevExpress.Web.ASPxGridViewCustomCallbackEventArgs e) { int rowIndex = int.Parse(e.Parameters); string userId = string.Empty; string role = string.Empty; string roleId = string.Empty; if (rowIndex >= 0) { Session["UserId"] = MUsersGridView.GetRowValues(int.Parse(e.Parameters), "Id").ToString(); } else { var manager = Context.GetOwinContext().GetUserManager <ApplicationUserManager>(); //var context = new ApplicationDbContext(); //var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context)); //var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context)); if (rowIndex == -2) { if (MRolesGridView.FocusedRowIndex > -1 && MUsersGridView.FocusedRowIndex > -1) { role = MRolesGridView.GetRowValues(MRolesGridView.FocusedRowIndex, "Name").ToString(); userId = MUsersGridView.GetRowValues(MUsersGridView.FocusedRowIndex, "Id").ToString(); if (!manager.IsInRole(userId, role)) { IdentityResult result = manager.AddToRole(userId, role); if (!result.Succeeded) { throw new Exception(result.Errors.FirstOrDefault()); } } } } else if (rowIndex == -3) { if (MUsersGridView.FocusedRowIndex > -1) { userId = MUsersGridView.GetRowValues(MUsersGridView.FocusedRowIndex, "Id").ToString(); List <Object> selectedItems = MRolesGridView.GetSelectedFieldValues(new string[] { "Id", "Name" }); foreach (object[] selectedItem in selectedItems) { role = selectedItem[1].ToString(); if (!manager.IsInRole(userId, role)) { IdentityResult result = manager.AddToRole(userId, role); if (!result.Succeeded) { throw new Exception(result.Errors.FirstOrDefault()); } } } } } else if (rowIndex == -4) { if (MUsersGridView.FocusedRowIndex > -1 && MUserInRolesGridView.FocusedRowIndex > -1) { userId = MUsersGridView.GetRowValues(MUsersGridView.FocusedRowIndex, "Id").ToString(); roleId = MUserInRolesGridView.GetRowValues(MUserInRolesGridView.FocusedRowIndex, "RoleId").ToString(); var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(new ApplicationDbContext())); role = roleManager?.FindById(roleId)?.Name ?? string.Empty; if (manager.IsInRole(userId, role)) { IdentityResult result = manager.RemoveFromRole(userId, role); if (!result.Succeeded) { throw new Exception(result.Errors.FirstOrDefault()); } } } } else if (rowIndex == -5) { if (MUsersGridView.FocusedRowIndex > -1 && MUserInRolesGridView.VisibleRowCount > 0) { userId = MUsersGridView.GetRowValues(MUsersGridView.FocusedRowIndex, "Id").ToString(); var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(new ApplicationDbContext())); List <Object> selectedItems = MUserInRolesGridView.GetSelectedFieldValues(new string[] { "UserId", "RoleId" }); foreach (object[] selectedItem in selectedItems) { roleId = selectedItem[1].ToString(); role = roleManager?.FindById(roleId)?.Name ?? string.Empty; if (manager.IsInRole(userId, role)) { IdentityResult result = manager.RemoveFromRole(userId, role); if (!result.Succeeded) { throw new Exception(result.Errors.FirstOrDefault()); } } } } } //context.SaveChanges(); } MUserInRolesGridView.DataBind(); }
//public CustomPasswordValidator(int length) //{ // RequiredLength = length; //} Task <IdentityResult> IIdentityValidator <string> .ValidateAsync(string item) { List <string> filedMessages = new List <string>(); string[] filedMessage = { }; if (String.IsNullOrEmpty(item) || item.Length < RequiredLength) { filedMessages.Add(String.Format("密碼長度至少 {0} ", RequiredLength)); //return Task.FromResult(IdentityResult.Failed(String.Format("密碼長度至少 {0}", RequiredLength))); } if (RequireDigit) { string digitPattern = @"^(?=.*[0-9]).*$"; if (!Regex.IsMatch(item, digitPattern)) { filedMessages.Add("密碼須包含 數字"); //return Task.FromResult(IdentityResult.Failed("密碼須包含 數字")); } } if (RequireUppercase) { string lowercasePattern = @"^(?=.*[A-Z]).*$"; if (!Regex.IsMatch(item, lowercasePattern)) { filedMessages.Add("密碼須包含 大寫英文字母"); //return Task.FromResult(IdentityResult.Failed("密碼須包含 大寫英文字母")); } } if (RequireLowercase) { string lowercasePattern = @"^(?=.*[a-z]).*$"; if (!Regex.IsMatch(item, lowercasePattern)) { filedMessages.Add("密碼須包含 小寫英文字母"); //return Task.FromResult(IdentityResult.Failed("密碼須包含 小寫英文字母")); } } if (RequireNonLetter) { string lowercasePattern = @"^(?=.*[!@#$%^&*;]).*$"; if (!Regex.IsMatch(item, lowercasePattern)) { filedMessages.Add("密碼須包含 特殊字元(!@#$%^&*;)"); //return Task.FromResult(IdentityResult.Failed("密碼須包含 特殊字元(!@#$%^&*;)")); } } if (filedMessages.Count != 0) { return(Task.FromResult(IdentityResult.Failed(filedMessages.ToArray()))); } //string pattern = @"^(?=.*[0-9])(?=.*[!@#$%^&*])[0-9a-zA-Z!@#$%^&*0-9]{10,}$"; //if (!Regex.IsMatch(item, pattern)) //{ // return Task.FromResult(IdentityResult.Failed("密碼須包含 數字 與 特殊字元")); //} return(Task.FromResult(IdentityResult.Success)); }
public static void Seed(IServiceProvider serviceProvider, IOptions <ApplicationSettings> options) { UserManager <ApplicationUser> userManager = serviceProvider.GetService <UserManager <ApplicationUser> >(); RoleManager <IdentityRole> roleManager = serviceProvider.GetService <RoleManager <IdentityRole> >(); // Get All comma-separated roles var roles = options.Value.Roles.Split(","); // Create roles if they are not existed foreach (var role in roles) { if (!roleManager.RoleExistsAsync(role).Result) { var storageRole = new IdentityRole { Name = role }; IdentityResult roleResult = roleManager.CreateAsync(storageRole).Result; } } // Create admin if he is not existed var admin = userManager.FindByEmailAsync(options.Value.AdminEmail).Result; if (admin == null) { ApplicationUser user = new ApplicationUser { UserName = options.Value.AdminName, Email = options.Value.AdminEmail, EmailConfirmed = true, IsActive = "True" }; IdentityResult result = userManager.CreateAsync(user, options.Value.AdminPassword).Result; userManager.AddClaimAsync(user, new System.Security.Claims.Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", options.Value.AdminEmail)); userManager.AddClaimAsync(user, new System.Security.Claims.Claim("IsActive", "True")); // Add Admin to Admin roles if (result.Succeeded) { userManager.AddToRoleAsync(user, "Admin"); } } // Create a service engineer if he is not existed var engineer = userManager.FindByEmailAsync(options.Value.EngineerEmail).Result; if (engineer == null) { ApplicationUser user = new ApplicationUser { UserName = options.Value.EngineerName, Email = options.Value.EngineerEmail, EmailConfirmed = true, LockoutEnabled = false, IsActive = "True" }; IdentityResult result = userManager.CreateAsync(user, options.Value.EngineerPassword).Result; userManager.AddClaimAsync(user, new System.Security.Claims.Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress", options.Value.EngineerEmail)); userManager.AddClaimAsync(user, new System.Security.Claims.Claim("IsActive", "True")); // Add Service Engineer to Engineer role if (result.Succeeded) { userManager.AddToRoleAsync(user, "Engineer"); } } }
public async Task ChangePasswordFail_ChangePasswordError() { ChangePasswordViewModel viewModel = new ChangePasswordViewModel { ConfirmPassword = "******", NewPassword = "******", OldPassword = "******", }; moqAspIdentity.mockUserManager.Setup(x => x.GetUserAsync(It.IsAny <ClaimsPrincipal>())).ReturnsAsync(applicationUser); moqAspIdentity.mockUserManager.Setup(x => x.ChangePasswordAsync(It.IsAny <ApplicationUser>(), It.IsAny <string>(), It.IsAny <string>())).ReturnsAsync(IdentityResult.Failed(this.identityError)); // setup AccountModel model = new AccountModel(moqAspIdentity.mockUserManager.Object); // operation try { string result = await model.ChangePassword(viewModel, moqAspIdentity.mockModelState.Object, moqAspIdentity.mockClaimsPrincipal.Object); // assert Assert.Fail("Should throw exception."); } catch (Exception ex) { if (ex is ApiException) { Assert.AreEqual(((ApiException)ex).ExceptionType, ExceptionsTypes.ChangePassword); } else { Assert.Fail("Wrong Type of exception thrown."); } } }
public async Task <ActionResult> Register(RegisterViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var user = new User { UserName = model.UserName, FirstName = model.FirstName, LastName = model.LastName, Email = model.UserName, FullName = UserInfoProvider.GetFullName(model.FirstName, null, model.LastName), Enabled = true }; var registerResult = new IdentityResult(); try { registerResult = await UserManager.CreateAsync(user, model.Password); } catch (Exception ex) { Service.Resolve <IEventLogService>().LogException("AccountController", "Register", ex); ModelState.AddModelError(String.Empty, ResHelper.GetString("register_failuretext")); } if (registerResult.Succeeded) { membershipActivitiesLogger.LogRegistration(model.UserName); var signInResult = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, true, false); if (signInResult == SignInStatus.Success) { ContactManagementContext.UpdateUserLoginContact(model.UserName); SendRegistrationSuccessfulEmail(user.Email); membershipActivitiesLogger.LogLogin(model.UserName); return(Redirect(Url.Kentico().PageUrl(ContentItemIdentifiers.HOME))); } if (signInResult == SignInStatus.LockedOut) { if (user.WaitingForApproval) { SendWaitForApprovalEmail(user.Email); } return(RedirectToAction("RequireConfirmedAccount")); } } foreach (var error in registerResult.Errors) { ModelState.AddModelError(String.Empty, error); } return(View(model)); }
public static void SeedUsers(UserManager <IdentityUser> userManager) { IdentityUser admin = userManager.FindByEmailAsync("*****@*****.**").Result; if (admin == null) { IdentityUser sysadmin = new IdentityUser(); sysadmin.Email = "*****@*****.**"; sysadmin.UserName = "******"; IdentityResult result = userManager.CreateAsync(sysadmin, "1Hort_Ed@").Result; if (result.Succeeded) { userManager.AddToRoleAsync(sysadmin, "Administrator").Wait(); } } IdentityUser instructor = userManager.FindByEmailAsync("*****@*****.**").Result; if (instructor == null) { IdentityUser sysadmin = new IdentityUser(); sysadmin.Email = "*****@*****.**"; sysadmin.UserName = "******"; IdentityResult result = userManager.CreateAsync(sysadmin, "1Hort_Ed@").Result; if (result.Succeeded) { userManager.AddToRoleAsync(sysadmin, "Instructor").Wait(); } } IdentityUser materialsmgmt = userManager.FindByEmailAsync("*****@*****.**").Result; if (materialsmgmt == null) { IdentityUser sysadmin = new IdentityUser(); sysadmin.Email = "*****@*****.**"; sysadmin.UserName = "******"; IdentityResult result = userManager.CreateAsync(sysadmin, "1Hort_Ed@").Result; if (result.Succeeded) { userManager.AddToRoleAsync(sysadmin, "MaterialsManagement").Wait(); } } IdentityUser billing = userManager.FindByEmailAsync("*****@*****.**").Result; if (billing == null) { IdentityUser sysadmin = new IdentityUser(); sysadmin.Email = "*****@*****.**"; sysadmin.UserName = "******"; IdentityResult result = userManager.CreateAsync(sysadmin, "1Hort_Ed@").Result; if (result.Succeeded) { userManager.AddToRoleAsync(sysadmin, "Billing").Wait(); } } }
public static Result ToApplicationResult(this IdentityResult result) { return(result.Succeeded ? Result.Success() : Result.Failure(result.Errors.Select(e => e.Description))); }
/// <summary> /// This will update EmailConfirmed field in Database /// </summary> /// <param name="user"></param> /// <param name="token"></param> /// <returns></returns> public async Task <IdentityResult> ConfirmEmailAsync(User user, string token) { IdentityResult result = await this._userManager.ConfirmEmailAsync(user, token); return(result); }
/// <summary> /// 如果成功移除缓存。 /// </summary> /// <param name="result">返回结果。</param> /// <param name="role">当前角色实例。</param> /// <returns>返回结果。</returns> protected IdentityResult FromResult(IdentityResult result, TRole role) { FromResult(result.Succeeded, role); return(result); }
public static void IsFailure(IdentityResult result) { Assert.NotNull(result); Assert.False(result.Succeeded); }
public static void IsSuccess(IdentityResult result) { Assert.NotNull(result); Assert.True(result.Succeeded); }
public AspNetIdentityResultWrapper(IdentityResult identityResult) { _identityResult = identityResult; }
//error response private void Errors(IdentityResult result) { foreach (IdentityError error in result.Errors) ModelState.AddModelError("", error.Description); }
public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = "") { //TODo: Beide PW gleich --> Check //Überprüfen, ob User und Adresse bereits existieren User userCheck = db.User.Where(u => u.UserName == model.Username).SingleOrDefault(); Address addressCheck = db.Address.Where(a => a.Country == model.Country && a.City == model.City && a.ZipCode == model.ZipCode && a.Street == model.Street && a.Number == model.Number).SingleOrDefault(); //Gültigkeit des Registierungskeys Prüfen try { Randomkey key = db.Randomkey.Where(r => r.Key == model.Registerkey).First(); db.Randomkey.Remove(key); db.SaveChanges(); } catch { ModelState.AddModelError("Registererror", "Registerkey is not available, maybe this key is not valid anymore"); return(View("RegisterView", model)); } //Falls Adresse nicht vorhanden, neue Anlegen if (addressCheck == null) { Address newAddress = new Address { Country = model.Country, City = model.City, ZipCode = model.ZipCode, Street = model.Street, Number = model.Number }; db.Add(newAddress); db.SaveChanges(); } addressCheck = db.Address.Where(a => a.Country == model.Country && a.City == model.City && a.ZipCode == model.ZipCode && a.Street == model.Street && a.Number == model.Number).SingleOrDefault(); //Falls User nicht vorhanden, neuen User anlegen if (userCheck == null) { User newUser = new User { Firstname = model.Firstname, Name = model.Name, UserName = model.Username, Email = model.Email, Birthday = model.Birthday, Birthplace = model.Birthplace, AddressId = addressCheck.Id }; //User Speichern und Passwort Hashen IdentityResult identityResult = await signInManager.UserManager.CreateAsync(newUser, model.Password); //Falls Speicherung erfolgreich wird User der Rolle "User" zugeordnet if (identityResult.Succeeded) { bool register = false; //await signInManager.UserManager.AddToRoleAsync(newUser, "User"); Es wird IsInRoleAsync aufgerufen Role role = db.Role.SingleOrDefault(r => r.Name == "User"); UserRole userRole = new UserRole { UserId = newUser.Id, RoleId = role.Id }; db.Add(userRole); db.SaveChanges(); if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl)) { register = true; return(RedirectToAction("Index", "Home")); //return Redirect(returnUrl); } register = false; return(RedirectToAction("Index", "Home", new { register })); } } ModelState.AddModelError("", "Invalid register attempt"); return(View("RegisterView", model)); }
public async Task <IActionResult> ExternalResponse(string ReturnUrl = "/") // return url gelmezse / anasayfaya yonlenecek. { ExternalLoginInfo info = await signInManager.GetExternalLoginInfoAsync(); // harici loginle alakali bilgiler gelecek. if (info == null) { return(RedirectToAction("LogIn")); } else { // SignInResult donuyor. cakisma olmamasi icin namespace belirtmek gerekir. Microsoft.AspNetCore.Identity Microsoft.AspNetCore.Identity.SignInResult result = await signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, true); // isPersistent değeri true varsayilan cookie'ye gore 60 gun tutulacak. // daha once kullanici login olmussa, login islemi gerceklesecek. if (result.Succeeded) { return(Redirect(ReturnUrl)); } // kullanici ilk kez geliyorsa; else { AppUser user = new AppUser(); // Principal uzerinden saglayicidan gelen claimlere ulasabiliyoruz. user.Email = info.Principal.FindFirst(ClaimTypes.Email).Value; // claim'lerden email olan bulunacak. value'si cekilecek. string ExternalUserId = info.Principal.FindFirst(ClaimTypes.NameIdentifier).Value; // NameIdentifier, saglayicidaki id'yi verecek. // saglayicidan gelen ad ve soyad ile username olusturma islemi if (info.Principal.HasClaim(x => x.Type == ClaimTypes.Name)) // name claim varsa { string userName = info.Principal.FindFirst(ClaimTypes.Name).Value; // bosluk yerine - ve kucuk. baska isimle cakismamasi icin id'de ekleniyor. (ilk 5) userName = userName.Replace(' ', '-').ToLower() + ExternalUserId.Substring(0, 5).ToString(); user.UserName = userName; } else // eger name claim yoksa kullanici adi email { user.UserName = info.Principal.FindFirst(ClaimTypes.Email).Value; } IdentityResult createResult = await userManager.CreateAsync(user); if (createResult.Succeeded) // kullanici basarili bi' sekilde olusmussa { IdentityResult loginResult = await userManager.AddLoginAsync(user, info); // login islemi için, AspNetUserLogins tablosuna kayit ediliyor. if (loginResult.Succeeded) { // await signInManager.SignInAsync(user, true); // giris islemi gerceklesiyor. Kullanicinin isPersisten degeri true cekiliyor. Cooki belirtilen sure kadar aktif. await signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, true); // gelen kullanicinin saglayicidan geldigi belli olsun diye ExternalLoginSignInAsync kullanildi. Uye claims'den saglayici araciligiyla geldigi belli olacak kullanicinin. return(Redirect(ReturnUrl)); } else { AddModelError(loginResult); } } else { AddModelError(createResult); // createResult hatalari } } } // Model state yapisindan hatalari liste seklinde LINQ kullanarak cekme ve CustomError sayfasina model olarak gonderme List <string> errors = ModelState.Values.SelectMany(x => x.Errors).Select(y => y.ErrorMessage).ToList(); return(View("CustomError", errors)); }
public dynamic Put(ChangePasswordDTO objresetpassword) { CustomResponse objres = new CustomResponse(); if (objresetpassword.ChageType == 1) { try { //compare key with database if (AccountRepository.CompareResetToken(objresetpassword.userid, objresetpassword.oldpassword)) { var provider = new Microsoft.Owin.Security.DataProtection.DpapiDataProtectionProvider("Sample"); userManager.UserTokenProvider = new Microsoft.AspNet.Identity.Owin.DataProtectorTokenProvider <MyIdentityUser>(provider.Create("EmailConfirmation")); string resettoken = userManager.GeneratePasswordResetToken(objresetpassword.userid); IdentityResult objresult = userManager.ResetPassword(objresetpassword.userid, resettoken, objresetpassword.newpassword); if (objresult.Succeeded) { objres.Status = CustomResponseStatus.Successful; objres.Message = "Password Updated Successfully"; objres.Response = null; } else { objres.Status = CustomResponseStatus.UnSuccessful; objres.Message = "Failed"; objres.Response = null; } } else { objres.Status = CustomResponseStatus.UnSuccessful; objres.Message = "Invalid Access token"; objres.Response = null; } } catch (Exception ex) { objres.Status = CustomResponseStatus.Exception; objres.Message = ex.Message; objres.Response = null; } return(objres); } else if (objresetpassword.ChageType == 2) { try { IdentityResult result = userManager.ChangePassword(objresetpassword.userid, objresetpassword.oldpassword, objresetpassword.newpassword); objres.Response = null; if (result.Succeeded) { objres.Status = CustomResponseStatus.Successful; objres.Message = "Password Changed Successfully"; } else { objres.Status = CustomResponseStatus.UnSuccessful; objres.Message = "Failed to update Password"; } } catch (Exception ex) { objres.Status = CustomResponseStatus.Successful; objres.Message = ex.Message; objres.Response = null; } return(objres); } else if (objresetpassword.ChageType == 3) { try { MyIdentityUser objuser = userManager.FindByEmail(objresetpassword.Email); objuser.FirstName = objresetpassword.FirstName; objuser.LastName = objresetpassword.LastName; objuser.MobileNumber = objresetpassword.MobileNumber; IdentityResult objidentityresult = userManager.Update(objuser); objres.Response = null; if (objidentityresult.Succeeded) { objres.Status = CustomResponseStatus.Successful; objres.Message = "User Updated Successfully"; } else { objres.Status = CustomResponseStatus.UnSuccessful; objres.Message = "Failed to update User Details"; } } catch (Exception ex) { objres.Status = CustomResponseStatus.Successful; objres.Message = ex.Message; objres.Response = null; } return(objres); } else { return(null); } }
public async Task <IActionResult> PostUser([FromBody] UserRequest request) { if (!ModelState.IsValid) { return(BadRequest(new Response <object> { IsSuccess = false, Message = "Bad request" })); } User user = await _userHelper.GetUserByEmailAsync(request.Email); if (user != null) { return(BadRequest(new Response <object> { IsSuccess = false, Message = "This email is already registered." })); } user = new User { Address = request.Address, Document = request.Document, Email = request.Email, FirstName = request.FirstName, LastName = request.LastName, PhoneNumber = request.Phone, UserName = request.Email }; IdentityResult result = await _userHelper.AddUserAsync(user, request.Password); if (result != IdentityResult.Success) { return(BadRequest(result.Errors.FirstOrDefault().Description)); } User userNew = await _userHelper.GetUserByEmailAsync(request.Email); if (request.RoleId == 1) { await _userHelper.AddUserToRoleAsync(userNew, "Owner"); _dataContext.Owners.Add(new Owner { User = userNew }); } else { await _userHelper.AddUserToRoleAsync(userNew, "Lessee"); _dataContext.Lessees.Add(new Lessee { User = userNew }); } await _dataContext.SaveChangesAsync(); string myToken = await _userHelper.GenerateEmailConfirmationTokenAsync(user); string tokenLink = Url.Action("ConfirmEmail", "Account", new { userid = user.Id, token = myToken }, protocol: HttpContext.Request.Scheme); _mailHelper.SendMail(request.Email, "Email confirmation", $"<h1>Email Confirmation</h1>" + $"To allow the user, " + $"please click on this link:</br></br><a href = \"{tokenLink}\">Confirm Email</a>"); return(Ok(new Response <object> { IsSuccess = true, Message = "A Confirmation email was sent. Please confirm your account and log into the App." })); }
public override async Task <IdentityResult> ValidateAsync(UserManager <User> manager, User user, string password) { var errors = new List <IdentityError>(); if (string.IsNullOrWhiteSpace(password)) { errors.Add(new IdentityError { Code = "PasswordIsNotSet", Description = "لطفا کلمهی عبور را تکمیل کنید." }); return(IdentityResult.Failed(errors.ToArray())); } if (string.IsNullOrWhiteSpace(user?.UserName)) { errors.Add(new IdentityError { Code = "UserNameIsNotSet", Description = "لطفا نام کاربری را تکمیل کنید." }); return(IdentityResult.Failed(errors.ToArray())); } // First use the built-in validator var result = await base.ValidateAsync(manager, user, password); errors = result.Succeeded ? new List <IdentityError>() : result.Errors.ToList(); // Extending the built-in validator if (password.Contains(user.UserName, StringComparison.OrdinalIgnoreCase)) { errors.Add(new IdentityError { Code = "PasswordContainsUserName", Description = "کلمهی عبور نمیتواند حاوی قسمتی از نام کاربری باشد." }); return(IdentityResult.Failed(errors.ToArray())); } if (!isSafePasword(password)) { errors.Add(new IdentityError { Code = "PasswordIsNotSafe", Description = "کلمهی عبور وارد شده به سادگی قابل حدس زدن است." }); return(IdentityResult.Failed(errors.ToArray())); } if (await _usedPasswordsService.IsPreviouslyUsedPasswordAsync(user, password)) { errors.Add(new IdentityError { Code = "IsPreviouslyUsedPassword", Description = "لطفا کلمهی عبور دیگری را انتخاب کنید. این کلمهی عبور پیشتر توسط شما استفاده شدهاست و تکراری میباشد." }); return(IdentityResult.Failed(errors.ToArray())); } return(!errors.Any() ? IdentityResult.Success : IdentityResult.Failed(errors.ToArray())); }
public void VerifyDefaultConstructor() { var result = new IdentityResult(); Assert.False(result.Succeeded); Assert.Equal(0, result.Errors.Count()); }
public static RespostaApi ParaRespostaApi(this IdentityResult resultado) { return(resultado.Succeeded ? RespostaApi.Sucesso() : RespostaApi.Falha(resultado.Errors.Select(e => e.Description))); }
public async Task<ActionResult> Register(RegisterViewModel rvm) { //if registration data is valid, create a new user on the database if (ModelState.IsValid) { //this code maps the RegisterViewModel to the AppUser domain model AppUser newUser = new AppUser { UserName = rvm.Email, Email = rvm.Email, PhoneNumber = rvm.PhoneNumber, Address = rvm.Address, Birthdate = rvm.Birthdate, FirstName = rvm.FirstName, LastName = rvm.LastName, }; TimeSpan newdate = DateTime.Now.Subtract(rvm.Birthdate); if (DateTime.Now.Year - rvm.Birthdate.Year < 13) { return View("Error", new String[] { "You must be at least 13 years old to register!" }); } if (rvm.RoleChoice == RoleChoice.Employee && newdate.TotalDays < 6570) { return View("Error", new String[] { "Employees must be 18 or older!" }); } //This code uses the UserManager object to create a new user with the specified password IdentityResult result = await _userManager.CreateAsync(newUser, rvm.Password); //If the add user operation was successful, we need to do a few more things if (result.Succeeded) { //TODO: Add user to desired role. This example adds the user to the customer role await _userManager.AddToRoleAsync(newUser, rvm.RoleChoice.ToString()); //NOTE: This code logs the user into the account that they just created //You may or may not want to log a user in directly after they register - check //the business rules! if (@User.Identity.IsAuthenticated == false) { Microsoft.AspNetCore.Identity.SignInResult result2 = await _signInManager.PasswordSignInAsync(rvm.Email, rvm.Password, false, lockoutOnFailure: false); } if(rvm.RoleChoice == RoleChoice.Employee) { Utilities.EmailMessaging.SendEmail(rvm.Email, "Registration Confirmation:", "Congratulations, " + rvm.FirstName + " you have been hired and your account has been registered!"); } else { Utilities.EmailMessaging.SendEmail(rvm.Email, "Registration Confirmation:", "Congratulations, " + rvm.FirstName + " you have successfully registered your account!"); } //Send the user to the home page return RedirectToAction("Index", "Home"); } else //the add user operation didn't work, and we need to show an error message { foreach (IdentityError error in result.Errors) { ModelState.AddModelError("", error.Description); } } } //this is the sad path - something went wrong, //return the user to the register page to try again return View(rvm); }
/// <summary> /// Christian Lopez /// 2017/04/14 /// /// Adding Admin and other roles - Mimic code used in .NET class /// </summary> /// <remarks>William Flood enabled Migrations 2017/04/13</remarks> /// <param name="context"></param> protected override void Seed(MVCPresentationLayer.Models.ApplicationDbContext context) { var userStore = new UserStore <ApplicationUser>(context); var userManager = new UserManager <ApplicationUser>(userStore); // check for an admin, and if not there, create one if (!context.Users.Any(u => u.UserName == "*****@*****.**")) { var user = new ApplicationUser { UserName = "******", Email = "*****@*****.**" //FirstName = "System", //LastName = "Admin" }; IdentityResult result = userManager.Create(user, "P@ssw0rd"); if (result.Succeeded) { // add claims if we want - don't do first one //userManager.AddClaim(user.Id, new Claim(ClaimTypes.Role, "Administrator")); userManager.AddClaim(user.Id, new Claim(ClaimTypes.GivenName, "System")); userManager.AddClaim(user.Id, new Claim(ClaimTypes.Surname, "Administrator")); } context.Roles.AddOrUpdate(r => r.Name, new IdentityRole { Name = "Administrator" }); context.SaveChanges(); userManager.AddToRole(user.Id, "Administrator"); context.SaveChanges(); } // Add the roles based on tables in the existing internal system context.Roles.AddOrUpdate(r => r.Name, new IdentityRole { Name = "Employee" }); context.Roles.AddOrUpdate(r => r.Name, new IdentityRole { Name = "Customer" }); context.Roles.AddOrUpdate(r => r.Name, new IdentityRole { Name = "Supplier" }); context.SaveChanges(); if (!context.Users.Any(u => u.UserName == "jmyers")) { var user = new ApplicationUser { UserName = "******", Email = "*****@*****.**" //FirstName = "John", //LastName = "Myers" }; IdentityResult result = userManager.Create(user, "m0R3$e(ur3"); if (result.Succeeded) { // add claims if we want - don't do first one //userManager.AddClaim(user.Id, new Claim(ClaimTypes.Role, "Administrator")); userManager.AddClaim(user.Id, new Claim(ClaimTypes.GivenName, "John")); userManager.AddClaim(user.Id, new Claim(ClaimTypes.Surname, "Myers")); } context.SaveChanges(); userManager.AddToRole(user.Id, "Customer"); context.SaveChanges(); } }
// Type-1: update proifle Type-2 : forgot password link sending, Type-3 : Add User public dynamic Post(UserDTO objuserinfo, int type) { CustomResponse objres = new CustomResponse(); if (type == 1) { return(UserRepository.UpdateProfile(objuserinfo)); } else if (type == 2) { try { MyIdentityUser objuser = userManager.FindByEmail(objuserinfo.Email); string uid = objuser.Id; Random r = new Random(); string resettoken = DateTime.Now.Millisecond.ToString() + r.Next(9999) + DateTime.Now.Millisecond + r.Next(9999).ToString() + DateTime.Now.Millisecond; AccountRepository.AddPasswordResetToken(uid, resettoken); Email.SendEmail("<span><h3>Please Click in the below link to reset your password</h3> </span><div> <a href='" + ConfigurationManager.AppSettings["BaseWebUrl"].ToString() + "/Account/ResetPassword?token=" + resettoken + "&userid=" + objuser.Id + "'>Reset Password</a></div>", @"~/Email Templates/EmailTemplate.html", objuser.UserName, "Zon ticketing System Reset Password Link"); objres.Status = CustomResponseStatus.Successful; objres.Message = "success"; objres.Response = null; } catch (Exception ex) { objres.Status = CustomResponseStatus.Exception; objres.Message = ex.Message; objres.Response = null; } } else if (type == 3) { try { MyIdentityUser user = new MyIdentityUser(); user.UserName = objuserinfo.Email; user.Email = objuserinfo.Email; user.FirstName = objuserinfo.FirstName; user.LastName = objuserinfo.LastName; user.MobileNumber = objuserinfo.MobileNumber; user.CreatedBy = objuserinfo.CreatedBy; user.Status = "1"; IdentityResult result = userManager.Create(user, "Zoninn@123"); if (result.Succeeded) { if (Convert.ToInt32(objuserinfo.Password) == 1) { userManager.AddToRole(user.Id, "Administrator"); } else if (Convert.ToInt32(objuserinfo.Password) == 2) { userManager.AddToRole(user.Id, "Client"); } else if (Convert.ToInt32(objuserinfo.Password) == 3) { userManager.AddToRole(user.Id, "Developer"); } Email.SendEmail("<span><h3>You are now registered user of Zon Innovative Ticketing System.</h3> </span><div>Your registered Username is <b>" + objuserinfo.Email + "</b></div><div>Your Password is <b>Zoninn@123</b></div><div>You will need to use this the next time you login to our system.</div>", @"~/Email Templates/EmailTemplate.html", objuserinfo.Email, "User Registered In Zon Innovative Ticketing System"); objres.Status = CustomResponseStatus.Successful; objres.Message = "Success"; objres.Response = null; } else { objres.Status = CustomResponseStatus.UnSuccessful; objres.Message = "Failed"; objres.Response = null; } } catch (Exception ex) { objres.Status = CustomResponseStatus.Exception; objres.Message = ex.Message; objres.Response = null; } } return(objres); }
public static void IsFailure(IdentityResult result, string error) { Assert.NotNull(result); Assert.False(result.Succeeded); Assert.Equal(error, result.Errors.First()); }
protected virtual void CheckErrors(IdentityResult identityResult) { identityResult.CheckErrors(LocalizationManager); }
public async void Registration_CalledAndFailedUserCreate_ReturnsBadRequestWithErrorContext() { IUnitOfWork _unitOfWork = Substitute.For <IUnitOfWork>(); ICookieManager _cookieManager = Substitute.For <ICookieManager>(); IUserStore <User> _usersStore = Substitute.For <IUserStore <User> >(); var manager = Substitute.For <UserManager <User> >(_usersStore, null, null, null, null, null, null, null, null); UserRegistrationViewModel model = new UserRegistrationViewModel(); var errorContext = new ErrorContext(); errorContext.Errors.Add("test"); manager.CreateAsync(Arg.Any <User>(), Arg.Any <string>()).Returns(Task.FromResult(IdentityResult.Failed(new IdentityError() { Code = "Test", Description = "test" }))); var usersController = new UsersController(_unitOfWork, manager, _cookieManager); var result = await usersController.Registration(model); var badRequestObjectResult = Assert.IsType <BadRequestObjectResult>(result); var returnValue = Assert.IsType <ErrorContext>(badRequestObjectResult.Value); Assert.Equal(errorContext.Errors, returnValue.Errors); }
private void CheckErrors(IdentityResult identityResult) { identityResult.CheckErrors(LocalizationManager); }
public void Can_create_user_and_log_in() { const string username = "******"; string password = Guid.NewGuid().ToString("n"); const string googleLogin = "******"; const string yahooLogin = "******"; var user = new SimpleAppUser { UserName = username }; using (var docStore = NewDocStore()) { using (var session = docStore.OpenSession()) { using (var mgr = new UserManager <SimpleAppUser>(new UserStore <SimpleAppUser>(session))) { IdentityResult result = mgr.Create(user, password); Assert.True(result.Succeeded); Assert.NotNull(user.Id); var res1 = mgr.AddLogin(user.Id, new UserLoginInfo("Google", googleLogin)); var res2 = mgr.AddLogin(user.Id, new UserLoginInfo("Yahoo", yahooLogin)); Assert.True(res1.Succeeded); Assert.True(res2.Succeeded); } session.SaveChanges(); } using (var session = docStore.OpenSession()) { var loaded = session.Load <SimpleAppUser>(user.Id); Assert.NotNull(loaded); Assert.NotSame(loaded, user); Assert.Equal(loaded.Id, user.Id); Assert.Equal(loaded.UserName, user.UserName); Assert.NotNull(loaded.PasswordHash); Assert.Equal(loaded.Logins.Count, 2); Assert.True(loaded.Logins.Any(x => x.LoginProvider == "Google" && x.ProviderKey == googleLogin)); Assert.True(loaded.Logins.Any(x => x.LoginProvider == "Yahoo" && x.ProviderKey == yahooLogin)); var loadedLogins = session.Advanced.LoadStartingWith <IdentityUserLogin>("IdentityUserLogins/"); Assert.Equal(loadedLogins.Length, 2); foreach (var login in loaded.Logins) { var loginDoc = session.Load <IdentityUserLogin>(Util.GetLoginId(login)); Assert.Equal(login.LoginProvider, loginDoc.Provider); Assert.Equal(login.ProviderKey, loginDoc.ProviderKey); Assert.Equal(user.Id, loginDoc.UserId); } } using (var session = docStore.OpenSession()) { using (var mgr = new UserManager <SimpleAppUser>(new UserStore <SimpleAppUser>(session))) { var userByName = mgr.Find(username, password); var userByGoogle = mgr.Find(new UserLoginInfo("Google", googleLogin)); var userByYahoo = mgr.Find(new UserLoginInfo("Yahoo", yahooLogin)); Assert.NotNull(userByName); Assert.NotNull(userByGoogle); Assert.NotNull(userByYahoo); Assert.Equal(userByName.UserName, username); // The Session cache should return the very same objects Assert.Same(userByName, userByGoogle); Assert.Same(userByName, userByYahoo); } session.SaveChanges(); } } }