/// <summary> /// Logs the user in or creates the a site user account if the user does not exist, based on membership user. /// Sets the logged user in the session. /// </summary> /// <exception cref="ValidationException"></exception> /// <returns>The user id of the authenticated user</returns> public static int TryFinishMembershipLogin(SessionWrapper session, MembershipUser membershipUser, IUsersService service) { if (membershipUser == null) { throw new ArgumentNullException("Can not finish membership signin with membership not set."); } var siteUser = service.GetByProviderId(AuthenticationProvider.Membership, membershipUser.ProviderUserKey.ToString()); if (siteUser == null) { //User does not exist on Nearforums db siteUser = new User(); siteUser.UserName = membershipUser.UserName; siteUser.Email = membershipUser.Email; siteUser = service.Add(siteUser, AuthenticationProvider.Membership, membershipUser.ProviderUserKey.ToString()); } session.SetUser(siteUser, AuthenticationProvider.Membership); return siteUser.Id; }
/// <summary> /// Logs the user in or creates the user account if the user does not exist. /// Sets the logged user in the session. /// </summary> public static int OpenIdFinishLogin(IAuthenticationResponse response, SessionWrapper session, IUsersService service, bool enableClaimsRequest) { string externalId = response.ClaimedIdentifier.ToString(); User user = service.GetByProviderId(AuthenticationProvider.OpenId, externalId); var claimsResponse = response.GetExtension<ClaimsResponse>(); string name = enableClaimsRequest ? claimsResponse.Nickname : response.FriendlyIdentifierForDisplay; if (user == null) { user = new User(0, name); if (enableClaimsRequest) { user.Email = claimsResponse.Email; user.BirthDate = claimsResponse.BirthDate; } user = service.Add(user, AuthenticationProvider.OpenId, externalId); } else { if (enableClaimsRequest && !claimsResponse.Email.Equals(user.Email, StringComparison.CurrentCultureIgnoreCase)) { user.Email = claimsResponse.Email; service.Edit(user); } } session.SetUser(user, AuthenticationProvider.OpenId); return user.Id; }