summaryrefslogtreecommitdiff
path: root/Project-Unite/App_Start/IdentityConfig.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Project-Unite/App_Start/IdentityConfig.cs')
-rw-r--r--Project-Unite/App_Start/IdentityConfig.cs124
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);
+ }
+ }
+}