1 // Copyright (c) .NET Foundation. All rights reserved.
2 // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
3 
4 using System;
5 using System.Collections.Generic;
6 
7 namespace Microsoft.AspNetCore.Identity
8 {
9     /// <summary>
10     /// Options for user tokens.
11     /// </summary>
12     public class TokenOptions
13     {
14         /// <summary>
15         /// Default token provider name used by email confirmation, password reset, and change email.
16         /// </summary>
17         public static readonly string DefaultProvider = "Default";
18 
19         /// <summary>
20         /// Default token provider name used by the email provider. />.
21         /// </summary>
22         public static readonly string DefaultEmailProvider = "Email";
23 
24         /// <summary>
25         /// Default token provider name used by the phone provider. />.
26         /// </summary>
27         public static readonly string DefaultPhoneProvider = "Phone";
28 
29         /// <summary>
30         /// Default token provider name used by the <see cref="AuthenticatorTokenProvider"/>.
31         /// </summary>
32         public static readonly string DefaultAuthenticatorProvider = "Authenticator";
33 
34         /// <summary>
35         /// Will be used to construct UserTokenProviders with the key used as the providerName.
36         /// </summary>
37         public Dictionary<string, TokenProviderDescriptor> ProviderMap { get; set; } = new Dictionary<string, TokenProviderDescriptor>();
38 
39         /// <summary>
40         /// Gets or sets the token provider used to generate tokens used in account confirmation emails.
41         /// </summary>
42         /// <value>
43         /// The <see cref="IUserTwoFactorTokenProvider{TUser}"/> used to generate tokens used in account confirmation emails.
44         /// </value>
45         public string EmailConfirmationTokenProvider { get; set; } = DefaultProvider;
46 
47         /// <summary>
48         /// Gets or sets the <see cref="IUserTwoFactorTokenProvider{TUser}"/> used to generate tokens used in password reset emails.
49         /// </summary>
50         /// <value>
51         /// The <see cref="IUserTwoFactorTokenProvider{TUser}"/> used to generate tokens used in password reset emails.
52         /// </value>
53         public string PasswordResetTokenProvider { get; set; } = DefaultProvider;
54 
55         /// <summary>
56         /// Gets or sets the <see cref="ChangeEmailTokenProvider"/> used to generate tokens used in email change confirmation emails.
57         /// </summary>
58         /// <value>
59         /// The <see cref="ChangeEmailTokenProvider"/> used to generate tokens used in email change confirmation emails.
60         /// </value>
61         public string ChangeEmailTokenProvider { get; set; } = DefaultProvider;
62 
63         /// <summary>
64         /// Gets or sets the <see cref="ChangePhoneNumberTokenProvider"/> used to generate tokens used when changing phone numbers.
65         /// </summary>
66         /// <value>
67         /// The <see cref="ChangePhoneNumberTokenProvider"/> used to generate tokens used when changing phone numbers.
68         /// </value>
69         public string ChangePhoneNumberTokenProvider { get; set; } = DefaultPhoneProvider;
70 
71         /// <summary>
72         /// Gets or sets the <see cref="AuthenticatorTokenProvider"/> used to validate two factor sign ins with an authenticator.
73         /// </summary>
74         /// <value>
75         /// The <see cref="AuthenticatorTokenProvider"/> used to validate two factor sign ins with an authenticator.
76         /// </value>
77         public string AuthenticatorTokenProvider { get; set; } = DefaultAuthenticatorProvider;
78 
79         /// <summary>
80         /// Gets or sets the issuer used for the authenticator issuer.
81         /// </summary>
82         public string AuthenticatorIssuer { get; set; } = "Microsoft.AspNetCore.Identity.UI";
83     }
84 }