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 async Task <IActionResult> Reconnect([FromBody] ReconnectViewModel viewModel) { if (viewModel.Key.Equals(EncryptHelper.Encrypt(viewModel.Id + Keys.Salty))) { var query = new UserById { Id = viewModel.Id }; await DataHandler.Execute(query); if (query.Result != null && query.Result.IsActive && (query.ResultTenant == null || query.ResultTenant.IsActive)) { 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 = "Reconnect failed" })); }
public async Task SigninAuthLogicSignup() { var logic = new CoreApiLogicHandler(); logic.Result.Setup(m => m.Execute(It.IsAny <WriteToken>())).Returns(true); var command = new SigninAuth { LogicHandler = logic, Login = StandardUser, Config = UserConfigData.GetFirst(), Tenant = TenantData.GetFirst(), Settings = new FakeSettings() }; await command.Execute(); logic.HasExecuted.Should().BeTrue(); logic.Result.Should().NotBeNull(); command.Result.Verification.Should().BeNullOrEmpty(); command.Result.Key.Should().NotBeNullOrEmpty(); command.Result.Message.Should().BeNullOrEmpty(); command.Result.Config.Should().NotBeNull(); command.Result.Id.Should().NotBeNullOrEmpty(); command.Result.Success.Should().BeTrue(); }
public async Task <IActionResult> TwoFactor([FromBody] TwoFactorViewModel viewModel) { var query = new UserById { Id = viewModel.Id }; await DataHandler.Execute(query); if (query.Result != null && query.Result.IsActive && (query.ResultTenant == null || query.ResultTenant.IsActive)) { var config = query.ResultConfig; if (config.TwoFactorAuth == viewModel.Auth && config.IsTwoFactorActive && config.IsTwoFactor) { config.IsTwoFactorActive = false; config.TwoFactorAuth = string.Empty; var persist = new Persist <UserConfig>() { Model = config }; await DataHandler.Execute(persist); if (persist.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 = "Identity 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" })); }