tgstation-server
The /tg/station 13 server suite
CredentialsProvider.cs
Go to the documentation of this file.
1 using LibGit2Sharp;
2 using LibGit2Sharp.Handlers;
3 using Microsoft.Extensions.Logging;
4 using System;
6 
7 namespace Tgstation.Server.Host.Components.Repository
8 {
11  {
15  readonly ILogger<CredentialsProvider> logger;
16 
21  public CredentialsProvider(ILogger<CredentialsProvider> logger)
22  {
23  this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
24  }
25 
27  public CredentialsHandler GenerateHandler(string username, string password) => (a, b, supportedCredentialTypes) =>
28  {
29  var hasCreds = username != null;
30  var supportsUserPass = supportedCredentialTypes.HasFlag(SupportedCredentialTypes.UsernamePassword);
31  var supportsAnonymous = supportedCredentialTypes.HasFlag(SupportedCredentialTypes.Default);
32 
33  logger.LogTrace("Credentials requested. Present: {0}. Supports anonymous: {1}. Supports user/pass: {2}", hasCreds, supportsAnonymous, supportsUserPass);
34  if (supportsUserPass)
35  {
36  if (hasCreds)
37  return new UsernamePasswordCredentials
38  {
39  Username = username,
40  Password = password
41  };
42  }
43 
44  if (supportsAnonymous)
45  return new DefaultCredentials();
46 
47  if (hasCreds)
48  throw new JobException("Remote does not support anonymous authentication!");
49 
50  throw new JobException("Server does not support anonymous or username/password authentication!");
51  };
52  }
53 }
CredentialsProvider(ILogger< CredentialsProvider > logger)
Construct a CredentialsProvider
readonly ILogger< CredentialsProvider > logger
The ILogger for the CredentialsProvider
Operation exceptions thrown from the context of a Models.Job
Definition: JobException.cs:8