/// <summary> /// 添加用户角色。 /// </summary> /// <param name="role">用户角色实例。</param> /// <param name="cancellationToken">取消标识。</param> /// <returns>返回角色添加结果。</returns> public override async Task <IdentityResult> CreateAsync(TRole role, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); if (role == null) { throw new ArgumentNullException(nameof(role)); } role.RoleLevel = await GetMaxRoleLevelAsync(role) + 1;//获取当前角色等级 // ReSharper disable once SuspiciousTypeConversion.Global if (role is IRoleEventHandler <TRole> handler) { if (await RoleContext.BeginTransactionAsync(async db => { if (!await db.CreateAsync(role, cancellationToken)) { return(false); } if (!await handler.OnCreatedAsync(db, cancellationToken)) { return(false); } return(true); }, cancellationToken: cancellationToken)) { return(IdentityResult.Success); } } else if (await RoleContext.CreateAsync(role, cancellationToken)) { return(IdentityResult.Success); } return(IdentityResult.Failed(ErrorDescriber.DefaultError())); }
/// <summary> /// 添加用户角色。 /// </summary> /// <param name="role">用户角色实例。</param> /// <param name="cancellationToken">取消标识。</param> /// <returns>返回角色添加结果。</returns> public override async Task <IdentityResult> CreateAsync(TRole role, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); if (role == null) { throw new ArgumentNullException(nameof(role)); } role.RoleLevel = await GetMaxRoleLevelAsync(role) + 1;//获取当前角色等级 if (await RoleContext.CreateAsync(role, cancellationToken)) { return(IdentityResult.Success); } return(IdentityResult.Failed(ErrorDescriber.DefaultError())); }