static async Task <TUserAuth> LoadOrCreateFromSessionAsync(IAuthSession authSession, Raven.Client.Documents.Session.IAsyncDocumentSession session) { TUserAuth userAuth; if (!authSession.UserAuthId.IsNullOrEmpty()) { var ravenKey = RavenIdConverter.ToString(UserAuthCollectionName, int.Parse(authSession.UserAuthId)); userAuth = await session.LoadAsync <TUserAuth>(ravenKey); } else { userAuth = authSession.ConvertTo <TUserAuth>(); } return(userAuth); }
public async Task <IUserAuth> GetUserAuthAsync(IAuthSession authSession, IAuthTokens tokens, CancellationToken token = default) { if (!authSession.UserAuthId.IsNullOrEmpty()) { var userAuth = await GetUserAuthAsync(authSession.UserAuthId, token).ConfigAwait(); if (userAuth != null) { return(userAuth); } } if (!authSession.UserAuthName.IsNullOrEmpty()) { var userAuth = await GetUserAuthByUserNameAsync(authSession.UserAuthName, token).ConfigAwait(); if (userAuth != null) { return(userAuth); } } if (tokens == null || tokens.Provider.IsNullOrEmpty() || tokens.UserId.IsNullOrEmpty()) { return(null); } using var session = documentStore.OpenAsyncSession(); var oAuthProvider = await session .Query <UserAuth_By_UserAuthDetails.Result, UserAuth_By_UserAuthDetails>() .Customize(x => x.WaitForNonStaleResults()) .Where(q => q.Provider == tokens.Provider && q.UserId == tokens.UserId) .OfType <TUserAuthDetails>() .FirstOrDefaultAsync(token).ConfigAwait(); if (oAuthProvider != null) { var userAuth = await session.LoadAsync <TUserAuth>(RavenIdConverter.ToString(UserAuthCollectionName, oAuthProvider.UserAuthId), token); return(userAuth); } return(null); }
public IUserAuth GetUserAuth(IAuthSession authSession, IAuthTokens tokens) { if (!authSession.UserAuthId.IsNullOrEmpty()) { var userAuth = GetUserAuth(authSession.UserAuthId); if (userAuth != null) { return(userAuth); } } if (!authSession.UserAuthName.IsNullOrEmpty()) { var userAuth = GetUserAuthByUserName(authSession.UserAuthName); if (userAuth != null) { return(userAuth); } } if (tokens == null || tokens.Provider.IsNullOrEmpty() || tokens.UserId.IsNullOrEmpty()) { return(null); } using var session = documentStore.OpenSession(); var oAuthProvider = session .Query <UserAuth_By_UserAuthDetails.Result, UserAuth_By_UserAuthDetails>() .Customize(x => x.WaitForNonStaleResults()) .Where(q => q.Provider == tokens.Provider && q.UserId == tokens.UserId) .OfType <TUserAuthDetails>() .FirstOrDefault(); if (oAuthProvider != null) { return(session.Load <TUserAuth>(RavenIdConverter.ToString(UserAuthCollectionName, oAuthProvider.UserAuthId))); } return(null); }