diff options
Diffstat (limited to 'Project-Unite/App_Start/IdentityConfig.cs')
| -rw-r--r-- | Project-Unite/App_Start/IdentityConfig.cs | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/Project-Unite/App_Start/IdentityConfig.cs b/Project-Unite/App_Start/IdentityConfig.cs new file mode 100644 index 0000000..848daba --- /dev/null +++ b/Project-Unite/App_Start/IdentityConfig.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Data.Entity; +using System.Linq; +using System.Net; +using System.Net.Mail; +using System.Security.Claims; +using System.Threading.Tasks; +using System.Web; +using Microsoft.AspNet.Identity; +using Microsoft.AspNet.Identity.EntityFramework; +using Microsoft.AspNet.Identity.Owin; +using Microsoft.Owin; +using Microsoft.Owin.Security; +using Project_Unite.Models; + +namespace Project_Unite +{ + public class EmailService : IIdentityMessageService + { + public Task SendAsync(IdentityMessage message) + { + var smtp = new SmtpClient("in-v3.mailjet.com", 25); + smtp.UseDefaultCredentials = false; + smtp.Credentials = new NetworkCredential("fcc885a166c73e91ba6592345f64dfeb", "84b7c56e71b6c9bd1b26a98222494823"); + var sMsg = new MailMessage("[email protected]", message.Destination); + + sMsg.Body = @"<img src=""https://cdn.discordapp.com/attachments/241613675545231360/280020406528901131/unknown.png""/> + +<h1>Message from the ShiftOS staff</h1> + +<p>" + CommonMark.CommonMarkConverter.Convert(message.Body) + "</p>"; + sMsg.Subject = "[ShiftOS (Project: Unite)] " + message.Subject; + sMsg.IsBodyHtml = true; + smtp.Send(sMsg); + + return Task.FromResult(0); + } + } + + public class SmsService : IIdentityMessageService + { + public Task SendAsync(IdentityMessage message) + { + // Plug in your SMS service here to send a text message. + return Task.FromResult(0); + } + } + + // Configure the application user manager used in this application. UserManager is defined in ASP.NET Identity and is used by the application. + public class ApplicationUserManager : UserManager<ApplicationUser> + { + public ApplicationUserManager(IUserStore<ApplicationUser> store) + : base(store) + { + } + + public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context) + { + var manager = new ApplicationUserManager(new UserStore<ApplicationUser>(context.Get<ApplicationDbContext>())); + // Configure validation logic for usernames + manager.UserValidator = new UserValidator<ApplicationUser>(manager) + { + AllowOnlyAlphanumericUserNames = false, + RequireUniqueEmail = true + }; + + // Configure validation logic for passwords + manager.PasswordValidator = new PasswordValidator + { + RequiredLength = 6, + RequireNonLetterOrDigit = false, + RequireDigit = true, + RequireLowercase = true, + RequireUppercase = false, + }; + + // Configure user lockout defaults + manager.UserLockoutEnabledByDefault = true; + manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5); + manager.MaxFailedAccessAttemptsBeforeLockout = 5; + + // Register two factor authentication providers. This application uses Phone and Emails as a step of receiving a code for verifying the user + // You can write your own provider and plug it in here. + manager.RegisterTwoFactorProvider("Phone Code", new PhoneNumberTokenProvider<ApplicationUser> + { + MessageFormat = "Your security code is {0}" + }); + manager.RegisterTwoFactorProvider("Email Code", new EmailTokenProvider<ApplicationUser> + { + Subject = "Security Code", + BodyFormat = "Your security code is {0}" + }); + manager.EmailService = new EmailService(); + manager.SmsService = new SmsService(); + var dataProtectionProvider = options.DataProtectionProvider; + if (dataProtectionProvider != null) + { + manager.UserTokenProvider = + new DataProtectorTokenProvider<ApplicationUser>(dataProtectionProvider.Create("ASP.NET Identity")); + } + return manager; + } + } + + // Configure the application sign-in manager which is used in this application. + public class ApplicationSignInManager : SignInManager<ApplicationUser, string> + { + public ApplicationSignInManager(ApplicationUserManager userManager, IAuthenticationManager authenticationManager) + : base(userManager, authenticationManager) + { + } + + public override Task<ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user) + { + return user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager); + } + + public static ApplicationSignInManager Create(IdentityFactoryOptions<ApplicationSignInManager> options, IOwinContext context) + { + return new ApplicationSignInManager(context.GetUserManager<ApplicationUserManager>(), context.Authentication); + } + } +} |
