public async Task <UserLoginResultServiceModel> LoginAfterConfirmEmail(User user) { var result = new UserLoginResultServiceModel(false, ErrorResources.UserOrEmailNorValid); if (user != null) { this.SignOut(); if (!user.IsActive) { result.FailMessage = ErrorResources.UserNoActiveAccount; } else { user.LastAccess = DateTime.UtcNow; user.EmailConfirmed = true; await this.SignIn(user, true); await this.userManager.UpdateAsync(user); result = new UserLoginResultServiceModel(true, "", user); } } return(result); }
public async Task <UserLoginResultServiceModel> Login(string userEmail, string userPassword, bool isPersistent) { var result = new UserLoginResultServiceModel(false, ErrorResources.UserOrEmailNorValid); if (!string.IsNullOrWhiteSpace(userEmail) && !string.IsNullOrWhiteSpace(userPassword)) { var user = await this.userManager.FindAsync(userEmail.CleanLoginEmail(), userPassword); if (user != null) { if (!user.IsActive) { result.FailMessage = ErrorResources.UserNoActiveAccount; } else if (!user.EmailConfirmed) { result.FailMessage = string.Format(ErrorResources.UserEmailNotConfirmed, "/Account/ReSendConfirmationEmail?userEmail=" + userEmail); } else { this.SignOut(); user.LastAccess = DateTime.UtcNow; await this.SignIn(user, isPersistent); await this.userManager.UpdateAsync(user); result = new UserLoginResultServiceModel(true, "", user); } } } return(result); }
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { //context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); var unityContainer = UnityConfig.GetConfiguredContainer(); IAccountService accountService = unityContainer.Resolve <IAccountService>(); UserLoginResultServiceModel loginResult = await accountService.Login(context.UserName, context.Password, false); if (loginResult == null) { context.SetError("invalid_grant", ErrorResources.UserOrEmailNorValid); return; } else { if (loginResult.Succeeded) { string rolesFlag = accountService.GetRolesKeyFlagsForUser(loginResult.LoggedUser.Id); ClaimsIdentity identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim("sub", context.UserName)); identity.AddClaim(new Claim("role", rolesFlag)); AuthenticationProperties props; AuthenticationTicket authTicket; long recentProjectId = 0; if (rolesFlag.ToUpper() != "C") { IWebApiContentService mainService = unityContainer.Resolve <IWebApiContentService>(); var rmRecentProject = mainService.GetMostRecentProjectId(); if (rmRecentProject.Success) { recentProjectId = rmRecentProject.Value; } } var name = string.Format("{0} {1}", loginResult.LoggedUser.Name, loginResult.LoggedUser.Surname); if (string.IsNullOrWhiteSpace(name)) { name = loginResult.LoggedUser.UserName; } props = new AuthenticationProperties( new Dictionary <string, string> { { "roleFlag", rolesFlag }, { "name", name }, { "rpId", recentProjectId.ToString() } } ); authTicket = new AuthenticationTicket(identity, props); context.Validated(authTicket); } else { context.SetError("invalid_grant", loginResult.FailMessage); return; } } }