| Name | Message | Date |
|---|---|---|
| 📄 YouTubeAuthExtensions.cs | 3 days ago | |
| 📄 YouTubeCredentialsProvider.cs | 3 days ago | |
| 📄 YouTubeScopeAuthorizationHandler.cs | 3 days ago | |
| 📄 YouTubeScopeRequirement.cs | 3 days ago |
📄
src/Api/YouTubeAuth/YouTubeScopeAuthorizationHandler.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; namespace Slopper.Api.YouTubeAuth; internal sealed class YouTubeScopeAuthorizationHandler(IHttpContextAccessor httpContextAccessor) : AuthorizationHandler<YouTubeScopeRequirement> { protected override async Task HandleRequirementAsync( AuthorizationHandlerContext context, YouTubeScopeRequirement requirement ) { var httpContext = httpContextAccessor.HttpContext!; var auth = await httpContext.AuthenticateAsync(); if (!auth.Succeeded || auth.None) { httpContext.Items["ScopeIncremental"] = string.Join(" ", requirement.Scopes); return; } var existingScopes = auth.Properties?.Items.TryGetValue("scope", out var existingScope) is true && existingScope is not null ? existingScope.Split(" ", StringSplitOptions.RemoveEmptyEntries) : []; var additionalScopes = requirement.Scopes.Except(existingScopes).ToArray(); if (additionalScopes is not []) { httpContext.Items["ScopeIncremental"] = string.Join(" ", additionalScopes); return; } context.Succeed(requirement); } }