예제 #1
0
        /// <summary>
        /// 生成登录结果
        /// </summary>
        /// <param name="user"></param>
        /// <param name="tenant"></param>
        /// <returns></returns>
        protected virtual async Task <LoginResult> CreateLoginResultAsync(User user, Tenant tenant = null)
        {
            if (tenant != null && !tenant.IsActive)
            {
                return(new LoginResult(LoginResultType.TenantIsNotActive, tenant));
            }
            //if (!user.IsActive)
            //{
            //    return new LoginResult(LoginResultType.UserIsNotActive, tenant);
            //}
            //是否是第一次登录
            if (user.LastLoginTime == null)
            {
                user.IsFirstLogin = true;
            }
            else
            {
                user.IsFirstLogin = false;
            }
            user.LastLoginTime     = Clock.Now;
            user.AccessFailedCount = 0;
            user.LockoutEndDate    = null;

            await GetUserManager().UpdateAsync(user);

            await UnitOfWorkManager.Current.SaveChangesAsync();

            var principal = await ClaimsPrincipalCreator.CreateClaimsPrincipal(user);

            return(new LoginResult(
                       tenant,
                       user,
                       principal.Identity as ClaimsIdentity
                       ));
        }
예제 #2
0
        /// <summary>
        /// 生成登录结果
        /// </summary>
        /// <param name="user"></param>
        /// <param name="tenant"></param>
        /// <returns></returns>
        protected virtual async Task <LoginResult> CreateLoginResultAsync(User user, Tenant tenant = null)
        {
            if (tenant != null && !tenant.IsActive)
            {
                return(new LoginResult(LoginResultType.TenantIsNotActive, tenant));
            }
            if (!user.IsActive)
            {
                return(new LoginResult(LoginResultType.UserIsNotActive, tenant));
            }

            user.LastLoginTime = Clock.Now;

            await GetUserManager().UpdateAsync(user);

            await UnitOfWorkManager.Current.SaveChangesAsync();

            var principal = await ClaimsPrincipalCreator.CreateClaimsPrincipal(user);

            return(new LoginResult(
                       tenant,
                       user,
                       principal.Identity as ClaimsIdentity
                       ));
        }