コード例 #1
0
 internal UserAuthManager(IPrincipalUser principal)
 {
     _me     = principal;
     _db     = principal.ServiceProvider.GetRequiredService <IUsersDbContext>();
     _http   = principal.ServiceProvider.GetRequiredService <IHttpContextAccessor>().HttpContext;
     _wechat = principal.ServiceProvider.GetService <WeChatService>();
 }
コード例 #2
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();
            }));
        }
コード例 #3
0
        public static UserInfoViewModel User(this IPrincipalUser principal)
        {
            if (principal.Id == 0 || !(principal.SessionData() is SessionDataContainer sessionData))
            {
                return(new UserInfoViewModel());
            }

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

                var userInfo = db.Users
                               .AsNoTracking()
                               .Where(x => x.Id == principal.Id)
                               .Select(x => new UserInfoViewModel {
                    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 = ActionAwait.NoNeed,
                    IsTwoFactorValidated = false
                })
                               .SingleOrDefault();

                if (userInfo == null)
                {
                    principal.Auth().SignOut();
                }
                return userInfo ?? new UserInfoViewModel();
            }));
        }
コード例 #4
0
ファイル: Orders._.cs プロジェクト: cwx521/Husky.BizModules
 internal UserOrdersManager(IPrincipalUser principal)
 {
     _me     = principal;
     _db     = principal.ServiceProvider.GetRequiredService <IShoppingDbContext>();
     _http   = principal.ServiceProvider.GetRequiredService <IHttpContextAccessor>().HttpContext;
     _wechat = principal.ServiceProvider.GetService <WeChatService>();
     _alipay = principal.ServiceProvider.GetService <AlipayService>();
 }
コード例 #5
0
 public static void AbandonCache(this IPrincipalUser principal)
 {
     if (_pool != null)
     {
         _pool.Drop(principal.Id.ToString());
         _pool.Drop(principal.AnonymousId.ToString());
     }
 }
コード例 #6
0
ファイル: AliyunOssBucket.cs プロジェクト: cwx521/Husky
 public void TagPrincipalIdentity(string fileName, IPrincipalUser principal)
 {
     Tag(fileName, new Dictionary <string, string> {
         ["UserId"]          = principal.Id.ToString(),
         ["UserAnonymousId"] = principal.AnonymousId.ToString(),
         ["UserName"]        = principal.DisplayName
     });
 }
コード例 #7
0
 public static CacheDictionaryBag Cache(this IPrincipalUser principal)
 {
     _timeoutSeconds ??= principal.ServiceProvider.GetService <IKeyValueManager>()?.PrincipalCacheDataBagWillExpireAfterSeconds() ?? 3600;
     _pool ??= new CacheDataPool <CacheDictionaryBag>(principal.ServiceProvider.GetRequiredService <IMemoryCache>())
     {
         Timeout = TimeSpan.FromSeconds(_timeoutSeconds.Value)
     };
     _pool.Drop(principal.CacheKeyDroppable());
     return(_pool.PickOrCreate(principal.CacheKey(), _ => new CacheDictionaryBag(principal)));
 }
コード例 #8
0
 public TwoFactorManager(ITwoFactorDbContext twoFactorDb, IPrincipalUser principal, ISmsSender?smsSender, IMailSender?mailSender)
 {
     if (smsSender == null && mailSender == null)
     {
         throw new ArgumentNullException(null, $"At least to configure one of {smsSender} or {mailSender}");
     }
     _twoFactorDb = twoFactorDb;
     _me          = principal;
     _smsSender   = smsSender;
     _mailSender  = mailSender;
 }
コード例 #9
0
 internal static void ReadValuesFromPrincipal(this LogBase log, IPrincipalUser principal)
 {
     log.AnonymousId = principal.AnonymousId;
     log.UserId      = principal.Id;
     log.UserName    = principal.DisplayName;
 }
コード例 #10
0
ファイル: PrincipalExtension.cs プロジェクト: cwx521/Husky
 public static IDiagnosticsLogger Logger(this IPrincipalUser principal) => principal.ServiceProvider.GetRequiredService <IDiagnosticsLogger>();
コード例 #11
0
 public static UserMessagesManager Messages(this IPrincipalUser principal) => new UserMessagesManager(principal);
コード例 #12
0
 public static UserGroupsManager Groups(this IPrincipalUser principal) => new UserGroupsManager(principal);
コード例 #13
0
 internal AntiViolenceBlocker(IPrincipalUser principal)
 {
     _me = principal;
 }
コード例 #14
0
 public static UserProfileFunctions Profile(this IPrincipalUser principal) => new UserProfileFunctions(principal);
コード例 #15
0
 public static UserGroupsFunctions Groups(this IPrincipalUser principal) => new UserGroupsFunctions(principal);
コード例 #16
0
 public static UserAuthFunctions Auth(this IPrincipalUser principal) => new UserAuthFunctions(principal);
コード例 #17
0
 public TwoFactorManager(ITwoFactorDbContext twoFactorDb, IPrincipalUser principal, ISmsSender smsSender)
     : this(twoFactorDb, principal, smsSender, null)
 {
 }
コード例 #18
0
ファイル: CacheDictionaryBag.cs プロジェクト: cwx521/Husky
 internal CacheDictionaryBag(IPrincipalUser principal)
 {
     _principal = principal;
 }
コード例 #19
0
 internal static string CacheKey(this IPrincipalUser principal)
 {
     return(principal.IsAnonymous
                         ? principal.AnonymousId.ToString()
                         : principal.Id.ToString());
 }
コード例 #20
0
ファイル: UserAuthFunctions.cs プロジェクト: cwx521/Husky
 internal UserAuthFunctions(IPrincipalUser principal)
 {
     _me = principal;
     _db = principal.ServiceProvider.GetRequiredService <IUsersDbContext>();
 }
コード例 #21
0
 internal static string CacheKeyDroppable(this IPrincipalUser principal)
 {
     return(principal.IsAuthenticated
                         ? principal.AnonymousId.ToString()
                         : principal.Id.ToString());
 }
コード例 #22
0
 public IndexPageModel(IPrincipalUser principal, IDiagnosticsDbContext db)
 {
     _me = principal;
     _db = db;
 }
コード例 #23
0
 public static UserMessagesFunctions Messages(this IPrincipalUser principal) => new UserMessagesFunctions(principal);
コード例 #24
0
 public TwoFactorManager(ITwoFactorDbContext twoFactorDb, IPrincipalUser principal, IMailSender mailSender)
     : this(twoFactorDb, principal, null, mailSender)
 {
 }
コード例 #25
0
 public static ITwoFactorManager TwoFactor(this IPrincipalUser principal) => principal.ServiceProvider.GetRequiredService <ITwoFactorManager>();
コード例 #26
0
 public static UserAuthManager Auth(this IPrincipalUser principal) => new UserAuthManager(principal);
コード例 #27
0
 internal UserProfileManager(IPrincipalUser principal)
 {
     _me = principal;
     _db = principal.ServiceProvider.GetRequiredService <IUsersDbContext>();
 }
コード例 #28
0
 public static UserProfileManager Profile(this IPrincipalUser principal) => new UserProfileManager(principal);
コード例 #29
0
 internal UserCartManager(IPrincipalUser principal)
 {
     _me = principal;
     _db = principal.ServiceProvider.GetRequiredService <IShoppingDbContext>();
 }
コード例 #30
0
ファイル: AntiViolenceDefender.cs プロジェクト: cwx521/Husky
 public AntiViolenceDefender(IPrincipalUser principal)
 {
     _me = principal;
 }