Пример #1
0
        //Login admin - add interface for admins
        public SearchResults<ILogin> SearchLogins(OperationContext context, LoginSearch search)
        {
            var utcNow = context.App.TimeService.UtcNow;
              var session = context.OpenSession();
              search = search.DefaultIfNull(take: 20, defaultOrderBy: "UserName");
              var where = session.NewPredicate<ILogin>()
            .AndIfNotEmpty(search.TenantId, lg => lg.TenantId == search.TenantId.Value)
            .AndIfNotEmpty(search.UserName, lg => lg.UserName.StartsWith(search.UserName))
            .AndIfNotEmpty(search.UserId, lg => lg.UserId == search.UserId)
            .AndIfNotEmpty(search.ExpiringBefore, lg => lg.Expires != null && lg.Expires < search.ExpiringBefore.Value)
            .AndIfNotEmpty(search.CreatedAfter, lg => lg.CreatedOn >= search.CreatedAfter.Value)
            .AndIfNotEmpty(search.CreatedBefore, lg => lg.CreatedOn <= search.CreatedBefore.Value)
            .AndIf(search.EnabledOnly, lg => (lg.Flags & LoginFlags.Disabled) == 0)
            .AndIf(search.SuspendedOnly, lg => (lg.Flags & LoginFlags.Suspended) == 0 && lg.SuspendedUntil > utcNow);
              if (!string.IsNullOrWhiteSpace(search.Email)) {
            var factorHash = Util.StableHash(search.Email.Trim().ToLowerInvariant());
            var subQuery = session.EntitySet<ILoginExtraFactor>().Where(f => f.InfoHash == factorHash).Select(f => f.Login.Id);
            where = where.And(lg => subQuery.Contains(lg.Id));
              };
              var result = session.ExecuteSearch(where, search);
              if(LoginExtensions.CheckSuspensionEnded(result.Results, utcNow)) {

              }
              return result;
        }
Пример #2
0
        //Login admin - add interface for admins
        public SearchResults <ILogin> SearchLogins(OperationContext context, LoginSearch search)
        {
            var utcNow  = context.App.TimeService.UtcNow;
            var session = context.OpenSession();

            search    = search.DefaultIfNull(take: 20, defaultOrderBy: "UserName");
            var where = session.NewPredicate <ILogin>()
                        .AndIfNotEmpty(search.UserName, lg => lg.UserName.StartsWith(search.UserName))
                        .AndIfNotEmpty(search.UserId, lg => lg.UserId == search.UserId)
                        .AndIfNotEmpty(search.ExpiringBefore, lg => lg.Expires != null && lg.Expires < search.ExpiringBefore.Value)
                        .AndIfNotEmpty(search.CreatedAfter, lg => lg.CreatedOn >= search.CreatedAfter.Value)
                        .AndIfNotEmpty(search.CreatedBefore, lg => lg.CreatedOn <= search.CreatedBefore.Value)
                        .AndIf(search.EnabledOnly, lg => (lg.Flags & LoginFlags.Disabled) == 0)
                        .AndIf(search.SuspendedOnly, lg => (lg.Flags & LoginFlags.Suspended) != 0);
            if (!string.IsNullOrWhiteSpace(search.Email))
            {
                var subQuery = session.EntitySet <ILoginExtraFactor>().Where(f => f.FactorValue.StartsWith(search.Email))
                               .Select(f => f.Login.Id);
                where = where.And(lg => subQuery.Contains(lg.Id));
            }
            ;
            var result = session.ExecuteSearch(where, search);

            return(result);
        }