7a4c516a20
- 后端:新增 CloudSync 认证/权限/端点/服务与 DTO - 数据:新增用户/会话/安全策略实体与 EF Core migrations - 前端:新增云同步设置 UI、客户端与本地存储;Vite 支持 maui 构建输出到 wwwroot - 桌面端:新增 Avalonia 项目、内置 WebServer、托盘与 Windows 全局热键 - 发布/构建:新增 Windows/Linux 发布脚本与统一入口;调整 MAUI 资源与安装包配置 - 文档:同步更新 README/docs 与协作规则
48 lines
2.1 KiB
C#
48 lines
2.1 KiB
C#
using Microsoft.AspNetCore.Authentication;
|
|
using Microsoft.AspNetCore.Identity;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Hua.Todo.Application.CloudSync.Auth;
|
|
using Hua.Todo.Application.CloudSync.Services;
|
|
using Hua.Todo.Core.Entities;
|
|
|
|
namespace Hua.Todo.Application.CloudSync;
|
|
|
|
/// <summary>
|
|
/// 云同步服务端能力的依赖注入扩展。
|
|
/// </summary>
|
|
public static class CloudSyncServiceCollectionExtensions
|
|
{
|
|
/// <summary>
|
|
/// 注册云同步相关的认证、授权与业务服务。
|
|
/// </summary>
|
|
/// <param name="services">服务集合。</param>
|
|
/// <returns>服务集合。</returns>
|
|
public static IServiceCollection AddCloudSyncServer(this IServiceCollection services)
|
|
{
|
|
services.AddHttpContextAccessor();
|
|
|
|
services.AddSingleton<IRolePermissionMapper, DefaultRolePermissionMapper>();
|
|
services.AddScoped<IPasswordHasher<UserEntity>, PasswordHasher<UserEntity>>();
|
|
|
|
services.AddScoped<CloudAuthService>();
|
|
services.AddScoped<CloudTaskSyncService>();
|
|
services.AddScoped<SecurityPolicyService>();
|
|
|
|
services.AddAuthentication(SessionAuthenticationDefaults.Scheme)
|
|
.AddScheme<AuthenticationSchemeOptions, SessionAuthenticationHandler>(SessionAuthenticationDefaults.Scheme, _ => { });
|
|
|
|
services.AddAuthorization(options =>
|
|
{
|
|
options.AddPolicy("tasks:read", p => p.RequireClaim(CloudClaims.Permission, CloudPermissions.TasksRead));
|
|
options.AddPolicy("tasks:write", p => p.RequireClaim(CloudClaims.Permission, CloudPermissions.TasksWrite));
|
|
options.AddPolicy("sync:write", p => p.RequireClaim(CloudClaims.Permission, CloudPermissions.SyncWrite));
|
|
options.AddPolicy("policy:read", p => p.RequireClaim(CloudClaims.Permission, CloudPermissions.PolicyRead));
|
|
options.AddPolicy("policy:write", p => p.RequireClaim(CloudClaims.Permission, CloudPermissions.PolicyWrite));
|
|
options.AddPolicy("users:manage", p => p.RequireClaim(CloudClaims.Permission, CloudPermissions.UsersManage));
|
|
});
|
|
|
|
return services;
|
|
}
|
|
}
|
|
|