public async Task <IActionResult> Cancel([FromBody] ForgotViewModel viewModel) { var query = new UserByEmail { Email = viewModel.Email }; await DataHandler.Execute(query); if (query.Result != null && query.Result.IsActive && (query.ResultTenant == null || query.ResultTenant.IsActive)) { var config = query.ResultConfig; config.ResetAuth = string.Empty; config.ResetCode = string.Empty; config.ForgotCode = string.Empty; var persistConfig = new Persist <UserConfig>() { Model = config }; await DataHandler.Execute(persistConfig); if (persistConfig.Confirm.Success) { await DataHandler.Commit(); } return(Ok(true)); } return(Ok(new FailViewModel { Message = "Email not found" })); }
public async Task <IActionResult> Post([FromBody] SignupViewModel viewModel) { var query = new UserByEmail { Email = viewModel.Email }; await DataHandler.Execute(query); if (query.Result == null) { var signup = new SignupUser() { DataHandler = DataHandler, Input = viewModel, LogicHandler = LogicHandler, CloudHandler = CloudHandler }; await LogicHandler.Execute(signup); return(Ok(signup.ResultAuth)); } return(Ok(new FailViewModel { Message = "Email already in use" })); }
public async Task <IActionResult> Reset([FromBody] ForgotResetViewModel viewModel) { var query = new UserByEmail { Email = viewModel.Email }; await DataHandler.Execute(query); if (query.Result != null && query.Result.IsActive && (query.ResultTenant == null || query.ResultTenant.IsActive)) { var config = query.ResultConfig; if (!string.IsNullOrEmpty(config.ForgotCode) && !string.IsNullOrEmpty(config.ResetCode) && config.ForgotCode == viewModel.Code && config.ResetCode == viewModel.ResetCode) { var user = query.Result; user.EncryptedPwd = EncryptHelper.Encrypt(viewModel.ResetPassword); config.ResetAuth = string.Empty; config.ResetCode = string.Empty; config.ForgotCode = string.Empty; config.ForgotCounter = 0; var persistUser = new Persist <User>() { Model = user }; await DataHandler.Execute(persistUser); var persistConfig = new Persist <UserConfig>() { Model = config }; await DataHandler.Execute(persistConfig); if (persistUser.Confirm.Success) { await DataHandler.Commit(); } var logic = new SigninAuth { Login = query.Result, Config = query.ResultConfig, Tenant = query.ResultTenant, Settings = CloudHandler.Settings }; await LogicHandler.Execute(logic); return(Ok(logic.Result)); } return(Ok(new FailViewModel { Message = "Code does not match" })); } return(Ok(new FailViewModel { Message = "Email not found" })); }
public void should_be_culture_agnostic_sv_SE() { var query = new UserByEmail(_capitalARing); _user.Email = _aRing; Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("sv-SE"); query.Expression.Compile()(_user).ShouldBeTrue(); }
public async Task <IActionResult> Code([FromBody] ForgotViewModel viewModel) { var query = new UserByEmail { Email = viewModel.Email }; await DataHandler.Execute(query); if (query.Result != null && query.Result.IsActive && (query.ResultTenant == null || query.ResultTenant.IsActive)) { var config = query.ResultConfig; if (config.ForgotCounter < 10) { config.ForgotCode = StringHelper.GenerateCode(12); config.ResetAuth = Convert.ToString(EncryptHelper.Randomizer(100000, 999999)); config.ForgotCounter += 1; var persist = new Persist <UserConfig>() { Model = config }; await DataHandler.Execute(persist); if (persist.Confirm.Success) { await DataHandler.Commit(); } var notify = new SimpleNotify { CloudHandler = CloudHandler, DataHandler = DataHandler, CurrentUser = query.Result, LogicHandler = LogicHandler, Model = persist.Model, TemplateName = "forgot" }; await LogicHandler.Execute(notify); return(Ok(new ForgotCodeViewModel() { Email = viewModel.Email, Code = config.ForgotCode, Success = true })); } return(Ok(new FailViewModel { Message = "Too many Forgot Password attempts -> " + config.ForgotCounter })); } return(Ok(new FailViewModel { Message = "Email not found" })); }
public async Task UserByEmailDataTest() { using var store = GetDocumentStore(); using var session = store.OpenAsyncSession(); var loader = new UserByEmail { Session = session, Email = UserData.GetFirst().Email }; await loader.Execute(); loader.Result.Should().NotBeNull(); loader.Result.Id.Should().Be(UserData.FirstId); }
public async Task <IActionResult> Reply([FromBody] ForgotReplyViewModel viewModel) { var query = new UserByEmail { Email = viewModel.Email }; await DataHandler.Execute(query); if (query.Result != null && query.Result.IsActive && (query.ResultTenant == null || query.ResultTenant.IsActive)) { var config = query.ResultConfig; if (!string.IsNullOrEmpty(config.ForgotCode) && !string.IsNullOrEmpty(config.ResetAuth) && config.ForgotCode == viewModel.Code && config.ResetAuth == viewModel.ResetAuth) { config.ForgotCode = StringHelper.GenerateCode(12); config.ResetCode = StringHelper.GenerateCode(20); var persist = new Persist <UserConfig>() { Model = config }; await DataHandler.Execute(persist); if (persist.Confirm.Success) { await DataHandler.Commit(); } return(Ok(new ForgotResetViewModel() { Email = viewModel.Email, Code = config.ForgotCode, Success = true, ResetCode = config.ResetCode })); } return(Ok(new FailViewModel { Message = "Code does not match" })); } return(Ok(new FailViewModel { Message = "Email not found" })); }
public async Task <IActionResult> Auth([FromBody] LoginViewModel viewModel) { var query = new UserByEmail { Email = viewModel.Email }; await DataHandler.Execute(query); if (query.Result != null && query.Result.IsActive && (query.ResultTenant == null || query.ResultTenant.IsActive)) { if (query.Result.EncryptedPwd.Equals(EncryptHelper.Encrypt(viewModel.Pwd))) { if (query.ResultConfig.IsTwoFactor) { query.ResultConfig.TwoFactorAuth = Convert.ToString(EncryptHelper.Randomizer(100000, 999999)); query.ResultConfig.IsTwoFactorActive = true; var persist = new Persist <UserConfig>() { Model = query.ResultConfig }; await DataHandler.Execute(persist); if (persist.Confirm.Success) { await DataHandler.Commit(); } var notify = new SimpleNotify { CloudHandler = CloudHandler, DataHandler = DataHandler, CurrentUser = query.Result, LogicHandler = LogicHandler, Model = persist.Model, TemplateName = "twofactor" }; await LogicHandler.Execute(notify); return(Ok(new AuthViewModel() { Id = query.Result.Id, IsTwoFactor = true })); } else { var logic = new SigninAuth { Login = query.Result, Config = query.ResultConfig, Tenant = query.ResultTenant, Settings = CloudHandler.Settings }; await LogicHandler.Execute(logic); return(Ok(logic.Result)); } } } return(Ok(new FailViewModel { Message = "Login failed" })); }