public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); var oAuthProvider = Session.QueryOver <UserOAuthProvider>() .Where(x => x.Provider == tokens.Provider) .And(x => x.UserId == tokens.UserId) .SingleOrDefault(); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == default(DateTime)) { userAuth.CreatedDate = userAuth.ModifiedDate; } Session.Save(new UserAuthPersistenceDto(userAuth)); oAuthProvider.UserAuthId = userAuth.Id; if (oAuthProvider.CreatedDate == default(DateTime)) { oAuthProvider.CreatedDate = userAuth.ModifiedDate; } oAuthProvider.ModifiedDate = userAuth.ModifiedDate; Session.Save(oAuthProvider); return(oAuthProvider.UserAuthId.ToString(CultureInfo.InvariantCulture)); }
public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { using (var redis = factory.GetClient()) { UserOAuthProvider oAuthProvider = null; var oAuthProviderId = GetAuthProviderByUserId(redis, tokens.Provider, tokens.UserId); if (!oAuthProviderId.IsNullOrEmpty()) oAuthProvider = redis.As<UserOAuthProvider>().GetById(oAuthProviderId); var userAuth = GetUserAuth(redis, authSession, tokens) ?? new UserAuth { Id = redis.As<UserAuth>().GetNextSequence(), }; if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Id = redis.As<UserOAuthProvider>().GetNextSequence(), UserAuthId = userAuth.Id, Provider = tokens.Provider, UserId = tokens.UserId, }; var idx = IndexProviderToUserIdHash(tokens.Provider); redis.SetEntryInHash(idx, tokens.UserId, oAuthProvider.Id.ToString(CultureInfo.InvariantCulture)); } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (oAuthProvider.CreatedDate == default(DateTime)) oAuthProvider.CreatedDate = userAuth.ModifiedDate; oAuthProvider.ModifiedDate = userAuth.ModifiedDate; redis.Store(userAuth); redis.Store(oAuthProvider); redis.AddItemToSet(IndexUserAuthAndProviderIdsSet(userAuth.Id), oAuthProvider.Id.ToString(CultureInfo.InvariantCulture)); return userAuth.Id.ToString(CultureInfo.InvariantCulture); } }
/// <summary>Creates or merge authentication session.</summary> /// /// <param name="authSession">The authentication session.</param> /// <param name="tokens"> The tokens.</param> /// /// <returns>The new or merge authentication session.</returns> public string CreateOrMergeAuthSession(IAuthSession authSession, IOAuthTokens tokens) { var userAuth = GetUserAuth(authSession, tokens) ?? new UserAuth(); return dbFactory.Run(db => { var oAuthProvider = db.Select<UserOAuthProvider>(q => q.Provider == tokens.Provider && q.UserId == tokens.UserId).FirstOrDefault(); if (oAuthProvider == null) { oAuthProvider = new UserOAuthProvider { Provider = tokens.Provider, UserId = tokens.UserId, }; } oAuthProvider.PopulateMissing(tokens); userAuth.PopulateMissing(oAuthProvider); userAuth.ModifiedDate = DateTime.UtcNow; if (userAuth.CreatedDate == default(DateTime)) userAuth.CreatedDate = userAuth.ModifiedDate; db.Save(userAuth); oAuthProvider.UserAuthId = userAuth.Id != default(int) ? userAuth.Id : (int)db.GetLastInsertId(); if (oAuthProvider.CreatedDate == default(DateTime)) oAuthProvider.CreatedDate = userAuth.ModifiedDate; oAuthProvider.ModifiedDate = userAuth.ModifiedDate; db.Save(oAuthProvider); return oAuthProvider.UserAuthId.ToString(CultureInfo.InvariantCulture); }); }