Exemple #1
0
        /// <summary>
        /// 移除用户角色。
        /// </summary>
        /// <param name="user">用户实例对象。</param>
        /// <param name="normalizedRoleName">验证角色名称。</param>
        /// <param name="cancellationToken">取消标志。</param>
        public override async Task RemoveFromRoleAsync(TUser user, string normalizedRoleName, CancellationToken cancellationToken = default)
        {
            var role = await FindRoleAsync(normalizedRoleName, cancellationToken);

            if (role != null)
            {
                await UserRoleContext.BeginTransactionAsync(async db =>
                {
                    if (await db.DeleteAsync(x => x.UserId == user.Id && x.RoleId == role.Id,
                                             cancellationToken))
                    {
                        return(await SetMaxRoleAsync(db.As <TRole>(), user.Id, cancellationToken));
                    }
                    return(false);
                }, cancellationToken : cancellationToken);
            }
        }
Exemple #2
0
 /// <summary>
 /// 设置用户角色。
 /// </summary>
 /// <param name="userId">用户Id。</param>
 /// <param name="roleIds">角色Id列表。</param>
 /// <param name="cancellationToken">取消标识。</param>
 /// <returns>返回设置结果。</returns>
 public virtual Task <bool> SetUserToRolesAsync(int userId, int[] roleIds, CancellationToken cancellationToken = default)
 {
     return(UserRoleContext.BeginTransactionAsync(async db =>
     {
         await db.DeleteAsync(x => x.UserId == userId, cancellationToken);
         foreach (var roleId in roleIds)
         {
             if (!await db.CreateAsync(new TUserRole {
                 RoleId = roleId, UserId = userId
             }, cancellationToken))
             {
                 return false;
             }
         }
         return await SetMaxRoleAsync(db.As <TRole>(), userId, cancellationToken);
     }, cancellationToken: cancellationToken));
 }
        /// <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);
        }