This repository has been archived by the owner on Nov 3, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathAuthHeaders.cs
53 lines (45 loc) · 1.86 KB
/
AuthHeaders.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
42
43
44
45
46
47
48
49
50
51
52
53
using System.Linq;
using Grpc.Core;
using Improbable.OnlineServices.Common.Interceptors;
namespace Improbable.OnlineServices.Common
{
public static class AuthHeaders
{
private const string AuthenticatedHeader = "x-internal-is-authenticated";
private const string PlayerIdentifierHeader = "x-internal-player-identifier";
public static void AddAuthenticatedHeaderToContext(ServerCallContext context, bool authenticated)
{
context.RequestHeaders.Add(AuthenticatedHeader, authenticated ? "true" : "");
}
public static void AddPlayerIdentifierToContext(ServerCallContext context, string playerIdentifier)
{
context.RequestHeaders.Add(PlayerIdentifierHeader, playerIdentifier);
}
public static void CheckRequestAuthenticated(ServerCallContext context)
{
if (!"true".Equals(
context.RequestHeaders.SingleOrDefault(item => item.Key.Equals(AuthenticatedHeader))?.Value
))
{
throw new RpcException(new Status(StatusCode.PermissionDenied, "incorrect secret provided in request"));
}
}
public static string ExtractPlayerId(ServerCallContext context)
{
return context.RequestHeaders.SingleOrDefault(item => item.Key == PlayerIdentifierHeader)?.Value;
}
public static string ExtractPit(ServerCallContext context)
{
return context.RequestHeaders.SingleOrDefault(item =>
item.Key == PlayerIdentityTokenValidatingInterceptor.PlayerIdentityTokenHeaderKey)?.Value;
}
public static bool ValidatePlayerId(string playerId)
{
return !string.IsNullOrEmpty(playerId);
}
public static bool ValidatePit(string pit)
{
return !string.IsNullOrEmpty(pit);
}
}
}