Пример #1
0
        public static UserQuickViewModel QuickView(this IPrincipalUser principal)
        {
            if (principal.Id == 0)
            {
                return(new UserQuickViewModel());
            }

            return((UserQuickViewModel)principal.Cache().GetOrAdd(nameof(UserQuickViewModel), key => {
                using var scope = principal.ServiceProvider.CreateScope();
                var db = scope.ServiceProvider.GetRequiredService <IUsersDbContext>();

                var quickView = db.Users
                                .AsNoTracking()
                                .Where(x => x.Id == principal.Id)
                                .Select(x => new UserQuickViewModel {
                    PhotoUrl = x.PhotoUrl ?? (x.WeChat == null ? null : x.WeChat.HeadImageUrl),
                    PhoneNumber = x.Phone == null ? null : x.Phone.Number,
                    EmailAddress = x.Email == null ? null : x.Email.EmailAddress,
                    RegisteredTime = x.RegisteredTime,
                    AwaitChangePassword = Todo.NoNeed
                })
                                .SingleOrDefault();

                if (quickView == null)
                {
                    principal.Auth().SignOut();
                }
                return quickView ?? new UserQuickViewModel();
            }));
        }
Пример #2
0
 internal DateTime GetTimer()
 {
     return((DateTime)_me.Cache().GetOrAdd(nameof(AntiViolenceDefender), _ => DateTime.MinValue));
 }