public HttpResponseMessage SetupGoogleAuth() { var databaseSettings = CustomDatabase.GetSettingsFromDatabase(); if (!databaseSettings.GoogleAuthenticator_Enabled) { throw new Exception("Google Authenticator is disabled"); } //var user = SignInManager.AuthenticationManager.User.Identity.Name; //SignInManager.AuthenticationManager.AuthenticationResponseGrant.Identity.Name var userId = (HttpContext.Current.Session["TWOFACTORUSER"] as int?).Value; TwoFactorAuthenticator tfa = new TwoFactorAuthenticator(); var secretKey = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10); var setupInfo = tfa.GenerateSetupCode(CustomDatabase.GetSettingsFromDatabase().GoogleAuthenticator_Name, userId.ToString(), secretKey, 300, 300); var details = CustomDatabase.GetUserDetails(userId); if (details != null && details.IsValidated) { throw new UnauthorizedAccessException("This account has already setup GoogleAuthenticator"); } var isNew = details == null; details = new FortressUser2FASettings(); details.UserId = userId; details.Provider = "GoogleAuthenticator"; details.Configuration = secretKey; details.IsValidated = false; if (isNew) { CustomDatabase.Insert(details); } else { CustomDatabase.Update(details); } string qrCodeImageUrl = setupInfo.QrCodeSetupImageUrl; string manualEntrySetupCode = setupInfo.ManualEntryKey; var response = Request.CreateResponse(HttpStatusCode.OK, new { image = qrCodeImageUrl, manualEntryCode = manualEntrySetupCode }); return(response); }
public TwoFactorSetupOptions SetupAuthenticator() { var userId = Security.GetUserId(); var details = CustomDatabase.GetUserDetails(userId); if (details != null && details.IsValidated) { throw new UnauthorizedAccessException("This account has already setup GoogleAuthenticator"); } TwoFactorAuthenticator tfa = new TwoFactorAuthenticator(); var secretKey = Guid.NewGuid().ToString().Replace("-", "").Substring(0, 10); var setupInfo = tfa.GenerateSetupCode(CustomDatabase.GetSettingsFromDatabase().GoogleAuthenticator_Name, userId.ToString(), secretKey, 300, 300); var isNew = details == null; details = new FortressUser2FASettings(); details.UserId = userId; details.Provider = "GoogleAuthenticator"; details.Configuration = secretKey; details.IsValidated = false; if (isNew) { CustomDatabase.Insert(details); } else { CustomDatabase.Update(details); } string qrCodeImageUrl = setupInfo.QrCodeSetupImageUrl; string manualEntrySetupCode = setupInfo.ManualEntryKey; var response = new TwoFactorSetupOptions() { Image = qrCodeImageUrl, ManualEntryCode = manualEntrySetupCode }; return(response); }
public HttpResponseMessage SetupSMS(string number) { var user = SignInManager.GetVerifiedUserId(); var details = CustomDatabase.GetUserDetails(user); if (details != null && details.IsValidated) { throw new UnauthorizedAccessException("This account has already setup SMS"); } var isNew = details == null; details = new FortressUser2FASettings(); details.UserId = user; details.Provider = "SMS"; details.Configuration = number; details.IsValidated = false; lock (syncLock) { var code = _random.Next(999999).ToString(); details.CurrentCode = code; details.CurrentCodeGenerated = DateTime.UtcNow; } if (isNew) { CustomDatabase.Insert(details); } else { CustomDatabase.Update(details); } var settings = CustomDatabase.GetSettingsFromDatabase(); var SmsProvider = FortressContext.GetCurrentSmsProvider(); SmsProvider.SendSms(details.Configuration, string.Format(settings.SMS_MessageFormat, details.CurrentCode)); var response = Request.CreateResponse(HttpStatusCode.OK, new { token = "123456" }); return(response); }
public void Update(FortressUser2FASettings details) { var db = ApplicationContext.Current.DatabaseContext.Database; db.Update(details); }