Пример #1
0
        /// <summary>
        /// 判断用户是否包含当前角色。
        /// </summary>
        /// <param name="user">用户实例。</param>
        /// <param name="normalizedRoleName">验证角色名称。</param>
        /// <param name="cancellationToken">取消标志。</param>
        /// <returns>返回判断结果。</returns>
        public override async Task <bool> IsInRoleAsync(TUser user, string normalizedRoleName,
                                                        CancellationToken cancellationToken = default)
        {
            var role = await RoleManager.FindByNameAsync(normalizedRoleName);

            if (role == null)
            {
                return(false);
            }
            return(await UserRoleContext.AnyAsync(x => x.UserId == user.UserId && x.RoleId == role.RoleId, cancellationToken));
        }
Пример #2
0
        /// <summary>
        /// 添加用户角色。
        /// </summary>
        /// <param name="user">当前用户实例。</param>
        /// <param name="normalizedRoleName">验证角色名称。</param>
        /// <param name="cancellationToken">取消标志。</param>
        public override async Task AddToRoleAsync(TUser user, string normalizedRoleName, CancellationToken cancellationToken = default)
        {
            var role = await RoleManager.FindByNameAsync(normalizedRoleName);

            if (role == null || await UserRoleContext.AnyAsync(x => x.UserId == user.UserId && x.RoleId == role.RoleId, cancellationToken))
            {
                return;
            }
            //更新用户表显示角色Id和角色名称
            await UserRoleContext.BeginTransactionAsync(async db =>
            {
                if (!await db.CreateAsync(CreateUserRole(user, role), cancellationToken))
                {
                    return(false);
                }
                return(await SetMaxRoleAsync(db.As <TRole>(), user.UserId, cancellationToken));
            }, cancellationToken : cancellationToken);
        }