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 override async Task <IActionResult> Post([FromBody] MsgViewModel viewModel) { var model = await Parse(viewModel); if (AuthoriseWrite(model)) { model.Files = viewModel.Files.Select(f => f.Id).ToList(); model.Recipients = viewModel.Recipients.Select(f => f.Id).ToList(); var persist = new Persist <Msg> { Model = model }; await DataHandler.Execute(persist); if (persist.Confirm.Success) { await DataHandler.Commit(); } if (string.IsNullOrEmpty(viewModel.Id) || viewModel.ForceNotify) { foreach (var recipient in model.Recipients) { var loader = new UserById() { Id = recipient }; await DataHandler.Execute(loader); var notify = new SimpleNotify { CloudHandler = CloudHandler, DataHandler = DataHandler, CurrentUser = loader.Result, LogicHandler = LogicHandler, Model = persist.Model, TemplateName = "message" }; await LogicHandler.Execute(notify); } } return(Ok(ConfirmViewModel.CreateFromConfirm(persist.Confirm))); } return(Unauthorized()); }
public override async Task Execute() { var regionKey = "GLA"; var tenant = new Tenant() { Name = Input.TenantName, TenantName = Input.TenantName, EntryKey = StringHelper.GenerateCode(16), AuthorName = Input.Name, RegionKey = regionKey }; var isNew = true; if (string.IsNullOrEmpty(Input.TenantId)) { var persistClient = new Persist <Tenant>() { Model = tenant }; await DataHandler.Execute(persistClient); tenant = persistClient.Model; } else { var loaderClient = new Loader <Tenant>() { Id = Input.TenantId }; await DataHandler.Execute(loaderClient); tenant = loaderClient.Result; isNew = false; } if (tenant != null && !string.IsNullOrEmpty(tenant.Id)) { var user = new User() { TenantId = tenant.Id, TenantName = Input.TenantName, Name = Input.Name, Email = Input.Email, EncryptedPwd = EncryptHelper.Encrypt(Input.Pwd), AuthorName = Input.Name, Right = new UserRight() { CanAuth = isNew, CanAdmin = isNew, CanSuperuser = false }, RegionKey = regionKey }; var persistUser = new UserSave { Model = user }; await DataHandler.Execute(persistUser); if (persistUser.Confirm.Success) { if (isNew) { tenant.AuthorId = persistUser.Model.Id; tenant.TenantId = tenant.Id; var persistClient = new Persist <Tenant>() { Model = tenant }; await DataHandler.Execute(persistClient); tenant = persistClient.Model; var meetingType = new MeetingType() { TenantId = tenant.Id, TenantName = tenant.Name, Name = "Standard", IsRecur = false, Pretext = "Standard Meeting Type", RegionKey = regionKey, Prename = "Meeting", AuthorId = persistUser.Model.Id, AuthorName = persistUser.Model.Name }; var persistType = new Persist <MeetingType>() { Model = meetingType }; await DataHandler.Execute(persistType); } persistUser.Model.AuthorId = persistUser.Model.Id; await DataHandler.Execute(persistUser); await DataHandler.Commit(); var signin = new SigninAuth() { Tenant = tenant, Login = persistUser.Model, LogicHandler = LogicHandler, DataHandler = DataHandler, Config = persistUser.ResultConfig, Settings = CloudHandler.Settings }; await LogicHandler.Execute(signin); ResultAuth = signin.Result; Result = ActionConfirm.CreateSuccess(persistUser.Model); var notify = new SimpleNotify { CloudHandler = CloudHandler, DataHandler = DataHandler, CurrentUser = persistUser.Model, LogicHandler = LogicHandler, Model = persistUser.Model, TemplateName = isNew ? "welcomeclient" : "welcomeuser" }; await LogicHandler.Execute(notify); } else { Result = ActionConfirm.CreateFailure(persistUser.Confirm.Message); } } else { Result = ActionConfirm.CreateFailure("Error connecting organisation"); } }
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" })); }