public void SaveItem(ClaimsIdentity identity, Int32 listId, Int32 id, String text) { var userId = identity.GetUserId(); var item = new PlanListItem() { Id = id, Text = text }; this._repository.SaveItem(userId, listId, item); this._repository.SaveChanges(); }
public void SaveList(ClaimsIdentity identity, Int32 id, String name) { var userId = identity.GetUserId(); var list = new PlanList() { Id = id, Name = name }; this._repository.SaveList(userId, list); this._repository.SaveChanges(); }
public void CustomIdTest() { var id = new ClaimsIdentity( new[] { new Claim(ClaimTypes.NameIdentifier, "3", null, ExternalAuthenticationType), }, ExternalAuthenticationType); Assert.Equal(3, id.GetUserId<int>()); }
/// <summary> /// This static method is setup as a delegate in Startup.Auth and will be called each time a userIdentity is created /// </summary> /// <param name="userIdentity">the ClaimsIdentity created from CRM</param> /// <param name="manager">the user manager used to add claims in the CRM storage</param> public static async Task AddCustomUserClaims(System.Security.Claims.ClaimsIdentity userIdentity, UserManager <CrmIdentityUser <string>, string> manager) { // Here you can add your custom claims to the userIdentity // Below is an example of how to add a custom claim: // Check if the customClaim has been retrieved from CRM storage if (!userIdentity.HasClaim("MyClaimType", "MyClaimValue")) { // Add the claim to the CRM Claim storage System.Security.Claims.Claim customClaim = new Claim("MyClaimType", "MyClaimValue"); IdentityResult result = await manager.AddClaimAsync(userIdentity.GetUserId(), customClaim); // If all goes well, add the claim to the userIdentity. Next time the user logs in if (result.Succeeded) { userIdentity.AddClaim(customClaim); } else { // Handle the error } } }
public async Task<ActionResult> ExternalLoginCallback(string returnUrl) { var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(); if (loginInfo == null) { return RedirectToAction("Index", "login"); } //若使用者已經有登入資料,請使用此外部登入提供者登入使用者 if (loginInfo != null) { var id = new ClaimsIdentity(loginInfo.ExternalIdentity.Claims, DefaultAuthenticationTypes.ApplicationCookie); Session["Account"] = id.GetUserId(); Session["uname"] = loginInfo.DefaultUserName; //取得用戶名稱 Session["resAccount"] = loginInfo.Login.LoginProvider;//取得用戶來源 //var resourceAccount = loginInfo.Login.LoginProvider; //TODO: 驗證邏輯,註冊會員邏輯 Member m = new Member(); MemberData md = new MemberData(); if (Session["Account"] != null) { var memberData = md.Get().ToList().Where(a => a.uAccount == Session["Account"].ToString()).SingleOrDefault(); if (memberData == null) { m.uAccount = Session["Account"].ToString(); m.uName = loginInfo.DefaultUserName; m.wdate = DateTime.Now; m.udate = DateTime.Now; m.uPassWord = "******"; m.uphone = ""; m.memberID = DateTime.Now.ToString("yyyyMMdd") + (md.Get().Count + 1).ToString().PadLeft(3, '0'); m.isdel = 0; m.sort = 5000; switch (loginInfo.Login.LoginProvider) { case "Facebook": m.FacebookId = id.GetUserId(); m.GoogleId = ""; m.uemail = loginInfo.Email ?? ""; break; case "Google": m.FacebookId = ""; m.GoogleId = id.GetUserId(); m.uemail = loginInfo.Email; break; default: m.FacebookId = ""; m.GoogleId = ""; m.uemail = ""; break; } md.Create(m); TempData["Congu"] = "已成為會員"; } } //End: 加上你的驗證邏輯,或是註冊會員邏輯 AuthenticationManager.SignIn(id); return RedirectToLocal(returnUrl); } else { return RedirectToAction("Index", "login"); } // 若使用者已經有登入資料,請使用此外部登入提供者登入使用者 //var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false); //switch (result) //{ // case SignInStatus.Success: // return RedirectToLocal(returnUrl); // case SignInStatus.LockedOut: // return View("Lockout"); // case SignInStatus.RequiresVerification: // return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false }); // case SignInStatus.Failure: // default: // // 若使用者沒有帳戶,請提示使用者建立帳戶 // ViewBag.ReturnUrl = returnUrl; // ViewBag.LoginProvider = loginInfo.Login.LoginProvider; // return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { Email = loginInfo.Email }); //} }
public PlanListViewModel GetListById(ClaimsIdentity identity, Int32 id) { var userId = identity.GetUserId(); var list = this._repository.Get(userId, id); return Mapper.Map<PlanListViewModel>(list); }
public IList<PlanListViewModel> GetAllLists(ClaimsIdentity identity) { var userId = identity.GetUserId(); var lists = this._repository.GetAll(userId); return Mapper.Map<IList<PlanListViewModel>>(lists); }
public void DeleteList(ClaimsIdentity identity, Int32 id) { var userId = identity.GetUserId(); this._repository.DeleteList(userId, id); this._repository.SaveChanges(); }
private async Task<ClaimsIdentity> RemoveExternalClaims(ClaimsIdentity userIdentity, string loginProvider) { var currentClaims = await UserManager.GetClaimsAsync(userIdentity.GetUserId()); foreach (var providerClaim in AuthenticationManager.User.Claims.Where(c => c.Type.StartsWith("urn:" + loginProvider.ToLower()))) { if (!providerClaim.Type.StartsWith("http://schemas.xmlsoap.org/ws/2005/05/identity/claims")) { if (userIdentity.HasClaim(c => c.Type == providerClaim.Type)) { if (userIdentity.HasClaim(c => c.Type == providerClaim.Type)) { var toRemoveClaim = userIdentity.Claims.FirstOrDefault(c => c.Type == providerClaim.Type); if (toRemoveClaim != null) { userIdentity.RemoveClaim(toRemoveClaim); } } // remove from database var currentClaim = currentClaims.FirstOrDefault(c => c.Type == providerClaim.Type); if (currentClaim != null) await UserManager.RemoveClaimAsync(userIdentity.GetUserId(), currentClaim); } } } return userIdentity; }
private async Task<ClaimsIdentity> StoreExternalClaims(ClaimsIdentity userIdentity) { ClaimsIdentity externalIdentity = await AuthenticationManager.GetExternalIdentityAsync(DefaultAuthenticationTypes.ExternalCookie); if (externalIdentity != null) { var currentClaims = await UserManager.GetClaimsAsync(userIdentity.GetUserId()); foreach (var claim in externalIdentity.Claims) { if (!claim.Type.StartsWith("http://schemas.xmlsoap.org/ws/2005/05/identity/claims")) { if (userIdentity.HasClaim(c => c.Type == claim.Type && c.Issuer.Contains("LOCAL"))) { var toRemoveClaim = userIdentity.Claims.FirstOrDefault(c => c.Type == claim.Type && c.Issuer.Contains("LOCAL")); if (toRemoveClaim != null) { userIdentity.RemoveClaim(toRemoveClaim); } } if (!userIdentity.HasClaim(claim.Type, claim.Value)) { // Add to claims userIdentity.AddClaim(claim); // Remove current claim var currentClaim = currentClaims.FirstOrDefault(c => c.Type == claim.Type); if (currentClaim != null) await UserManager.RemoveClaimAsync(userIdentity.GetUserId(), currentClaim); // Store claim to database await UserManager.AddClaimAsync(userIdentity.GetUserId(), claim); } } } } return userIdentity; }
public void NoIdReturnsDefaultValue() { var id = new ClaimsIdentity(); Assert.Equal(0, id.GetUserId<int>()); }