Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        void UpdateIntKey(IUserAuth newUser)
        {
            var key = (string)UserAuthKeyProp.PublicGetter(newUser);

            newUser.Id = RavenIdConverter.ToInt(key);
        }