public async Task <IHttpActionResult> GetExternalLogin(string provider, string error = null) { if (error != null) { return(Redirect(Url.Content("~/") + "#error=" + Uri.EscapeDataString(error))); } if (!User.Identity.IsAuthenticated) { return(new ChallengeResult(provider, this)); } ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (externalLogin == null) { return(InternalServerError()); } if (externalLogin.LoginProvider != provider) { Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); return(new ChallengeResult(provider, this)); } ApplicationUser user = await UserManager.FindAsync(new UserLoginInfo(externalLogin.LoginProvider, externalLogin.ProviderKey)); bool hasRegistered = user != null; if (hasRegistered) { Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(UserManager, OAuthDefaults.AuthenticationType); ClaimsIdentity cookieIdentity = await user.GenerateUserIdentityAsync(UserManager, CookieAuthenticationDefaults.AuthenticationType); AuthenticationProperties properties = ApplicationOAuthProvider.CreateProperties(user.UserName); Authentication.SignIn(properties, oAuthIdentity, cookieIdentity); } else { IEnumerable <Claim> claims = externalLogin.GetClaims(); ClaimsIdentity identity = new ClaimsIdentity(claims, OAuthDefaults.AuthenticationType); Authentication.SignIn(identity); } return(Ok()); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); return(new UserInfoViewModel { Email = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null, ApiKey = "=)", User = this._service.Get(this.Authentication.User.Identity.GetUserName()) }); }
private UserInfoViewModel GetCurrentUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); return(new UserInfoViewModel { UserId = User.Identity.GetUserId(), UserName = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null, IsCurrent = true }); }
public async Task <IHttpActionResult> GetExternalLogin(string provider, string error = null) { string redirectUri = ""; if (error != null) { return(BadRequest(Uri.EscapeDataString(error))); } if (!User.Identity.IsAuthenticated) { return(new ChallengeResult(provider, this)); } var redirectUriValidationResult = ValidateClientAndRedirectUri(this.Request, ref redirectUri); if (!string.IsNullOrWhiteSpace(redirectUriValidationResult)) { return(BadRequest(redirectUriValidationResult)); } ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (externalLogin == null) { return(InternalServerError()); } if (externalLogin.LoginProvider != provider) { Request.GetOwinContext().Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); return(new ChallengeResult(provider, null)); } IdentityUser user = await IsUserRegistered(externalLogin); bool hasRegistered = (user != null); bool isRegisteredAsExternal = IsRegisteredAsExternal(user); var email = HttpUtility.UrlEncode(externalLogin.Email); redirectUri = string.Format("{0}#external_access_token={1}&provider={2}&haslocalaccount={3}&external_email={4}&isregisteredasexternal={5}", redirectUri, externalLogin.ExternalAccessToken, externalLogin.LoginProvider, hasRegistered.ToString(), email, isRegisteredAsExternal); return(Redirect(redirectUri)); }
public async Task <IHttpActionResult> RegisterExternal(RegisterExternalModel model) { var verifiedAccessToken = new ParsedExternalAccessToken(); if (ModelState.IsValid) { var helper = OauthHelper.Create(); if (!string.IsNullOrEmpty(model.Provider) && !string.IsNullOrEmpty(model.ExternalAccessToken)) { verifiedAccessToken = await helper.VerifyExternalAccessToken(model.Provider, model.ExternalAccessToken); if (verifiedAccessToken == null) { return(this.JsonError(HttpStatusCode.BadRequest, 10, "Invalid Provider or External Access Token", ModelState)); } } var loginInfo = await SignInManager.AuthenticationManager.GetExternalLoginInfoAsync(); ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(loginInfo.ExternalIdentity as ClaimsIdentity); var registerGeneral = new RegisterGeneralModel() { UserName = model.UserName, Email = model.Email, //FirstName = externalLogin.UserName.Split(' ')[0], //First Name //LastName = externalLogin.UserName.Split(' ').LastOrDefault(), //Last Name ExternalAccessToken = model.ExternalAccessToken, Provider = model.Provider }; var regResult = await RegisterInternal(registerGeneral); if (regResult.HasError) { return(JsonError(regResult.HttpStatusCode, regResult.ServerErrorCode, regResult.ErrorMessage, regResult.ModelState)); } else { var result = new { userId = regResult.UserId }; return(Json(result)); } } else { return(JsonError(HttpStatusCode.BadRequest, 10, "Warning", ModelState)); } }
public async Task <IHttpActionResult> GetExternalLogin(string provider, string error = null) { string redirectUri = "http://localhost:54046/"; if (error != null) { return(BadRequest(Uri.EscapeDataString(error))); } if (!User.Identity.IsAuthenticated) { return(new ChallengeResult(provider, this)); } //Fix this. //var redirectUriValidationResult = ValidateClientAndRedirectUri(this.Request, ref redirectUri); //if (!string.IsNullOrWhiteSpace(redirectUriValidationResult)) //{ // return BadRequest(redirectUriValidationResult); //} ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (externalLogin == null) { return(InternalServerError()); } if (externalLogin.LoginProvider != provider) { Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); return(new ChallengeResult(provider, this)); } IdentityUser user = await UserManager.FindAsync(new UserLoginInfo(externalLogin.LoginProvider, externalLogin.ProviderKey)); bool hasRegistered = user != null; redirectUri = string.Format("{0}#external_access_token={1}&provider={2}&haslocalaccount={3}&external_user_name={4}", redirectUri, externalLogin.ExternalAccessToken, externalLogin.LoginProvider, hasRegistered.ToString(), externalLogin.UserName); return(Redirect(redirectUri)); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); return(new UserInfoViewModel { Email = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null, FirstName = User.Identity.GetUserFirstName(), LastName = User.Identity.GetUserFirstName(), SchoolName = User.Identity.GetUserFirstName() }); }
public async Task <UserInfoViewModel> GetUserInfo() { var externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var user = await UserManager.FindByEmailAsync(User.Identity.GetUserName()); return(new UserInfoViewModel { Email = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null, FirstName = user.FirstName, LastName = user.LastName, Phone = user.PhoneNumber }); }
public UserModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var rols = ((ClaimsIdentity)User.Identity).Claims .Where(c => c.Type == ClaimTypes.Role) .Select(c => c.Value); return(new UserModel { Id = User.Identity.GetUserId(), Username = User.Identity.GetUserName(), Roles = rols, }); }
public UserInfoViewModel GetUserInfo() { // HttpContext.Current.User.Identity.Name ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); //获取用户相关信息 var GOwinContex = HttpContext.Current.GetOwinContext();//.OwinContext.GetUserManager<ApplicationUserManager>(); var _userManager = GOwinContex.GetUserManager <ApplicationUserManager>(); return(new UserInfoViewModel { Email = User.Identity.GetUserName() }); }
public async Task <IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model) { if (!this.ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } var externalLogin = ExternalLoginData.FromIdentity(this.User.Identity as ClaimsIdentity); if (externalLogin == null) { return(this.InternalServerError()); } var user = new UserProfile { UserName = model.UserName, Email = model.Email, EmailConfirmed = true }; user.Logins.Add( new IdentityUserLogin { LoginProvider = externalLogin.LoginProvider, ProviderKey = externalLogin.ProviderKey, UserId = user.Id }); var identityResult = await this.UserManager.CreateAsync(user); var createResult = this.GetErrorResult(identityResult); if (createResult != null) { return(createResult); } var justCreatedUser = await this.UserManager.FindByNameAsync(model.UserName); var roleResult = await this.UserManager.AddToRoleAsync(justCreatedUser.Id, "User"); var addRoleResult = this.GetErrorResult(roleResult); if (addRoleResult != null) { return(addRoleResult); } return(this.Ok()); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (!User.Equals(null)) { return new UserInfoViewModel { Email = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null }; } return null; }
public UserInfoViewModel GetUserInfoCustom() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var identity = (ClaimsPrincipal)Thread.CurrentPrincipal; // Get the claims values string UserRoleValue = identity.Claims.Where(c => c.Type == ClaimTypes.Country) .Select(c => c.Value).SingleOrDefault(); return(new UserInfoViewModel { Email = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null }); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var user = UserManager.FindByName(User.Identity.Name); // added to retrive additional fields return(new UserInfoViewModel { Email = user.Email, //User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null, //Additional Fields FirstName = user.FirstName, LastName = user.LastName }); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); Guid userId = Guid.Parse(User.Identity.GetUserId()); var user = Context.Users.First(item => item.AspUserId.Equals(userId)); return(new UserInfoViewModel { Email = User.Identity.GetUserName(), UserBirthDate = user.UserBirthDate, UserFirstName = user.UserFirstName, UserLastName = user.UserLastName, HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null }); }
public async Task <IHttpActionResult> Login(ExternalLoginProviderName provider, string error = null) { string redirectUri = string.Empty; if (error != null) { return(BadRequest(Uri.EscapeDataString(error))); } if (!User.Identity.IsAuthenticated) { return(new ChallengeResult(provider, this)); } var redirectUriValidationResult = ValidateClientAndRedirectUri(this.Request, ref redirectUri); if (!string.IsNullOrWhiteSpace(redirectUriValidationResult)) { return(BadRequest(redirectUriValidationResult)); } ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (externalLogin == null) { return(InternalServerError()); } if (externalLogin.LoginProvider != provider) { this.OwinAuthentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); return(new ChallengeResult(provider, this)); } IdentityUser <Guid, CustomUserLogin, CustomUserRole, CustomUserClaim> user = await _authRepository.FindAsync(new UserLoginInfo(externalLogin.LoginProvider.ToString(), externalLogin.ProviderKey)); bool hasRegistered = user != null; redirectUri = string.Format("{0}#external_access_token={1}&provider={2}&haslocalaccount={3}&external_user_name={4}", redirectUri, externalLogin.ExternalAccessToken, externalLogin.LoginProvider, hasRegistered.ToString(), externalLogin.UserName); return(Redirect(redirectUri)); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext() .GetUserManager <ApplicationUserManager>() .FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); return(new UserInfoViewModel { //UserName = User.Identity.GetUserName(), UserID = user.Id, UserName = user.UserName, Email = user.Email, HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null }); }
public async Task <UserInfoViewModel> GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); ApplicationUser user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); IList <string> rolesForUser = await UserManager.GetRolesAsync(User.Identity.GetUserId()); return(new UserInfoViewModel { Email = User.Identity.GetUserName(), FirstName = user.FirstName, LastName = user.LastName, Roles = rolesForUser.ToArray(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null }); }
public async Task <UserInfoViewModel> GetUserInfoAsync() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var uId = User.Identity.GetUserId(); ApplicationUser user = await UserManager.FindByIdAsync(uId); return(new UserInfoViewModel { Id = uId, Name = user.FullName(), Email = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin?.LoginProvider, Roles = UserManager.GetRoles(uId) }); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var roleClaimValues = ((ClaimsIdentity)User.Identity).FindAll(ClaimTypes.Role).Select(c => c.Value); var roles = string.Join(",", roleClaimValues); return(new UserInfoViewModel { UserName = User.Identity.GetUserName(), Email = ((ClaimsIdentity)User.Identity).FindFirstValue(ClaimTypes.Email), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null, UserRoles = roles }); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var userId = User.Identity.GetUserId(); var context = new EscortServiceHouseEntities(); var user = context.Users.Find(userId); return(new UserInfoViewModel { UserId = User.Identity.GetUserId(), Username = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null, Roles = user.Roles.Select(r => context.Roles.Find(r.RoleId).Name).ToList() }); }
public async Task <IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (externalLogin == null) { return(InternalServerError()); } var user = new IdentityUser { UserName = model.UserName }; user.Logins.Add(new IdentityUserLogin { LoginProvider = externalLogin.LoginProvider, ProviderKey = externalLogin.ProviderKey }); var result = await UserManager.CreateAsync(user); var errorResult = GetErrorResult(result); if (errorResult != null) { return(errorResult); } result = await UserManager.AddToRoleAsync(user.Id, DefaultUserRole); errorResult = GetErrorResult(result); if (errorResult != null) { return(errorResult); } return(Ok()); }
public UserInfoViewModel GetCurrentUser() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); Model.User user = userBusiness.GetUserByExternalId(User.Identity.GetUserId()).Data; UserInfoViewModel retVal = !User.Identity.IsAuthenticated ? null : new UserInfoViewModel { UserName = User.Identity.GetUserName(), HasRegistered = user != null, IsAdmin = UserManager.IsInRole(User.Identity.GetUserId(), Constants.RoleNames.Admin), HasPassword = UserManager.HasPassword(User.Identity.GetUserId()), LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null }; return(retVal); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var userdetail = _userRepository.FindByName(User.Identity.GetUserName()); return(new UserInfoViewModel { UserName = User.Identity.GetUserName(), Role = CurrentUser.Role, FirstName = userdetail.FirstName, LastName = userdetail.LastName, EmployeeCode = userdetail.EmployeeCode, Email = userdetail.Email, PhoneNumber = userdetail.PhoneNumber, HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null }); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var _menuServices = new MP.Core.BUS.MNG.MenuServices(); var identity = (ClaimsPrincipal)Thread.CurrentPrincipal; return(new UserInfoViewModel { UserID = User.Identity.GetUserId(), UserName = User.Identity.GetUserName(), Department = identity.Claims.Where(c => c.Type == "Department").Select(x => x.Value).SingleOrDefault(), Email = identity.Claims.Where(c => c.Type == "Email").Select(x => x.Value).SingleOrDefault(), PhoneNumber = identity.Claims.Where(c => c.Type == "PhoneNumber").Select(x => x.Value).SingleOrDefault(), FullName = identity.Claims.Where(c => c.Type == "FullName").Select(x => x.Value).SingleOrDefault(), Menus = _menuServices.GetMenuByUserId(this.RequestContext.Principal.Identity.GetUserId()), VOCRoles = identity.Claims.Where(c => c.Type == "VOCRoles").Select(x => x.Value).SingleOrDefault(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null }); }
public UserInfoViewModel GetUserInfo() { ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var userId = User.Identity.GetUserId(); var account = db.Accounts.Find(userId); var roles = ((ClaimsIdentity)User.Identity).Claims.Where(x => x.Type == ClaimTypes.Role).ToList(); return(new UserInfoViewModel { Id = User.Identity.GetUserId(), Username = User.Identity.GetUserName(), Email = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null, Roles = roles.Select(x => x.Value).ToArray(), Account = account }); }
public async Task <UserInfoViewModel> GetUserInfo() { var externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); var userInfo = new UserInfoViewModel { UserName = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin != null ? externalLogin.LoginProvider : null }; var user = await UserManager.FindByIdAsync(User.Identity.GetUserId()); if (user != null) { userInfo.UserRoles = string.Join(",", user.Roles.Select(iur => iur.Role.Name)); } return(userInfo); }
public async Task <IHttpActionResult> GetExternalLogin(string provider, string error = null) { string redirectUri = string.Empty; if (error != null) { return(BadRequest(Uri.EscapeDataString(error))); } if (!User.Identity.IsAuthenticated) { return(new ChallengeResult(provider, this)); } ExternalLoginData externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (externalLogin == null) { return(InternalServerError()); } if (externalLogin.LoginProvider != provider) { Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); return(new ChallengeResult(provider, this)); } IdentityUser user = await _repo.FindAsync(new UserLoginInfo(externalLogin.LoginProvider, externalLogin.ProviderKey)); bool hasRegistered = user != null; redirectUri = string.Format("{0}#external_access_token={1}&provider={2}&haslocalaccount={3}&external_user_name={4}", redirectUri, externalLogin.ExternalAccessToken, externalLogin.LoginProvider, hasRegistered.ToString(), externalLogin.UserName); return(Redirect(redirectUri)); }
public async Task <IHttpActionResult> GetUserInfo() { var externalLogin = ExternalLoginData.FromIdentity(User.Identity as ClaimsIdentity); if (externalLogin == null && User.Identity.IsAuthenticated) { var loggedUser = await GetLoggedInUserInfoAsync(); return(Ok(loggedUser)); } else { var externalUserInfo = new ExternalUserInfoViewModel { Email = User.Identity.GetUserName(), HasRegistered = externalLogin == null, LoginProvider = externalLogin?.LoginProvider }; return(Ok(externalUserInfo)); } }
public async Task <IHttpActionResult> AddExternalLogin(AddExternalLoginBindingModel model) { if (!this.ModelState.IsValid) { return(this.BadRequest(this.ModelState)); } this.Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); var ticket = this.AccessTokenFormat.Unprotect(model.ExternalAccessToken); if (ticket == null || ticket.Identity == null || (ticket.Properties != null && ticket.Properties.ExpiresUtc.HasValue && ticket.Properties.ExpiresUtc.Value < DateTimeOffset.UtcNow)) { return(this.BadRequest("Failed to login to the external provider.")); } var externalData = ExternalLoginData.FromIdentity(ticket.Identity); if (externalData == null) { return(this.BadRequest("This external login is already associated with an account.")); } var result = await this.UserManager.AddLoginAsync( this.User.Identity.GetUserId(), new UserLoginInfo(externalData.LoginProvider, externalData.ProviderKey)); var errorResult = this.GetErrorResult(result); if (errorResult != null) { return(errorResult); } return(this.Ok()); }