public async Task <IActionResult> CheckEmail([FromBody] TSEmail tsEmail) { string UserID = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10); await TS.AddActivityLog(UserID, "Check Email", MethodBase.GetCurrentMethod()); GlobalFunctions.CmdDecryptEntityAsymm(tsEmail); TSUserEntity user = TS.FindUser(tsEmail.To, true, "Email").Result; TSEmail result = new TSEmail { To = string.Empty, OperationCode = 0 }; if (user is null) { result.Result = "OK"; } else { result.Result = "Email already exists"; } return(Ok(result)); }
public async Task <ActionResult <TSEmail> > PassRecovery( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "user/passrecovery")] HttpRequest req, ILogger log) { TSEmail tsEmail = await MyFromBody <TSEmail> .FromBody(req, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); List <WebApiUserTypesEnum> localAllowedRoles = new List <WebApiUserTypesEnum> { WebApiUserTypesEnum.NotAuthorized, WebApiUserTypesEnum.Authorized, WebApiUserTypesEnum.Admin }; ClaimsPrincipal User = MyTokenValidator.Authenticate(req, localAllowedRoles, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); Guid UserID = Guid.Parse(LocalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()))); await CosmosAPI.cosmosDBClientActivity.AddActivityLog(UserID, "Pass Recovery", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); string newPass = GlobalFunctions.GetSalt(); CosmosDocUser cosmosDocUser = await CosmosAPI.cosmosDBClientUser.FindUserByUserName(tsEmail.To, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); if (cosmosDocUser != null) { cosmosDocUser.Salt = GlobalFunctions.GetSalt(); cosmosDocUser.HashedPassword = GlobalFunctions.CmdHashPasswordBytes(newPass, cosmosDocUser.Salt); bool b = await CosmosAPI.cosmosDBClientUser.UpdateUserDoc(cosmosDocUser, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); if (b) { tsEmail.To = cosmosDocUser.Email; TSEmail result = await TodosCosmos.LocalFunctions.SendEmail(tsEmail, string.Empty, newPass, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); result.To = string.Empty; result.OperationCode = 0; return(result); } else { return(new TSEmail { Result = "Error: Could not recover user password" }); } } else { return(new TSEmail { Result = "Error: User not found" }); } }
public async Task <bool> SendTodoReminders(List <string> CallTrace) { try { IEnumerable <CosmosDocTodo> result = await cosmosDBRepo.GetItemsAsync(x => x.DocType == (int)DocTypeEnum.Todo && x.UserID != CosmosAPI.DemoUserID && !x.IsReminderEmailed && x.HasRemindDate && x.RemindDate < DateTime.Now, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())); if (result.Any()) { bool b = false; string body = string.Empty; foreach (var item in result) { TSUser currUser = await CosmosAPI.cosmosDBClientUser.GetUser(item.UserID, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())); if (currUser != null) { item.IsReminderEmailed = true; TSEmail tmpEmail = new TSEmail() { To = currUser.Email, OperationCode = 4, }; body = "Name - " + item.Name + "\n\nDescription - " + item.Description + "\n\nDuedate - " + item.DueDate.ToString("MM/dd/yyyy HH:mm:ss.fff") + "."; tmpEmail = LocalFunctions.SendEmail(tmpEmail, string.Empty, body, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())).Result; b = UpdateTodoEntity(item, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())).Result; } } } } catch (CosmosException ex) { await CosmosAPI.cosmosDBClientError.AddErrorLog(Guid.Empty, ex.Message, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())); return(false); } return(true); }
public static async Task <TSEmail> CmdRecoverPass(TSEmail ParTSEmail) { httpClient.DefaultRequestHeaders.Accept.Clear(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", LocalData.CurrJWT); try { return(await httpClient.MyPostJsonGetJsonAsync("user/passrecovery", ParTSEmail)); } catch (Exception ex) { LocalFunctions.AddError(ex.Message, MethodBase.GetCurrentMethod(), true, false); } return(new TSEmail()); }
public async Task <IActionResult> SendMail([FromBody] TSEmail tsEmail) { string UserID = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10); await TS.AddActivityLog(UserID, "send mail", MethodBase.GetCurrentMethod()); string MachineID = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "MachineID", 10); GlobalFunctions.CmdDecryptEntityAsymm(tsEmail); TSEmail result = await GlobalFunctions.SendEmail(tsEmail, HttpContext.Connection.RemoteIpAddress.ToString(), MachineID); result.To = string.Empty; result.OperationCode = 0; return(Ok(result)); }
public static async Task <bool> CmdCheckUserNameNotExists(string ParUserName) { TSEmail ParTSEmail = new TSEmail { To = ParUserName, OperationCode = 0 }; TSEmail tsEmail = await WebApiFunctions.CmdCheckUserNameNotExists(ParTSEmail); if (tsEmail.Result.Equals("OK")) { return(true); } else { LocalFunctions.AddError(tsEmail.Result, MethodBase.GetCurrentMethod(), true, false); return(false); } }
public async Task <IActionResult> PassRecovery([FromBody] TSEmail tsEmail) { string UserID = GlobalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10); await TS.AddActivityLog(UserID, "Pass Recovery", MethodBase.GetCurrentMethod()); GlobalFunctions.CmdDecryptEntityAsymm(tsEmail); EmailOperationsEnum currOperationCode = (EmailOperationsEnum)tsEmail.OperationCode; string newPass = GlobalFunctions.GetSalt(); TSUserEntity tsUserEntity = TS.FindUser(tsEmail.To, false, string.Empty).Result; if (tsUserEntity != null) { tsUserEntity.Salt = GlobalFunctions.GetSalt(); tsUserEntity.HashedPassword = GlobalFunctions.CmdHashPasswordBytes(newPass, tsUserEntity.Salt); bool b = TS.UpdateUserEntity(tsUserEntity).Result; if (b) { tsEmail.To = tsUserEntity.Email; TSEmail result = await GlobalFunctions.SendEmail(tsEmail, string.Empty, newPass); result.To = string.Empty; result.OperationCode = 0; return(Ok(result)); } else { return(Ok("Error: Could not recover user password")); } } else { return(Ok("Error: User not found")); } }
public async Task <ActionResult <TSEmail> > CheckUserName( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "user/checkusername")] HttpRequest req, ILogger log) { TSEmail tsEmail = await MyFromBody <TSEmail> .FromBody(req, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); List <WebApiUserTypesEnum> localAllowedRoles = new List <WebApiUserTypesEnum> { WebApiUserTypesEnum.NotAuthorized, WebApiUserTypesEnum.Authorized, WebApiUserTypesEnum.Admin }; ClaimsPrincipal User = MyTokenValidator.Authenticate(req, localAllowedRoles, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); Guid UserID = Guid.Parse(LocalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()))); await CosmosAPI.cosmosDBClientActivity.AddActivityLog(UserID, "Check UserName", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); CosmosDocUser user = await CosmosAPI.cosmosDBClientUser.FindUserByUserName(tsEmail.To, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TSEmail result = new TSEmail { To = string.Empty, OperationCode = 0 }; if (user is null) { result.Result = "OK"; } else { result.Result = "UserName already exists"; } return(result); }
public static async Task <bool> CmdSendMail(string ParTo, EmailOperationsEnum ParEmailOperationsEnum) { TSEmail ParTSEmail = new TSEmail { To = ParTo, OperationCode = (int)ParEmailOperationsEnum }; TSEmail tsEmail = await WebApiFunctions.CmdSendEmail(ParTSEmail); if (tsEmail.Result.Equals("OK")) { LocalFunctions.AddMessage("Email was sent successfully, please check inbox, code is valid for 2 minutes", true, false); return(true); } else { LocalFunctions.AddError(tsEmail.Result, MethodBase.GetCurrentMethod(), true, false); return(false); } }
public static async Task <bool> CmdRecoverPass(string ParUserName, EmailOperationsEnum ParEmailOperationsEnum) { TSEmail ParTSEmail = new TSEmail { To = ParUserName, OperationCode = (int)ParEmailOperationsEnum }; TSEmail tsEmail = await WebApiFunctions.CmdRecoverPass(ParTSEmail); if (tsEmail.Result.Equals("OK")) { LocalFunctions.AddMessage("Password recovered successfully, new password was sent to your email", true, false); return(true); } else { LocalFunctions.AddError(tsEmail.Result, MethodBase.GetCurrentMethod(), true, false); return(false); } }
public async Task <ActionResult <TSEmail> > SendMail( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "user/sendmail")] HttpRequest req, ILogger log) { TSEmail tsEmail = await MyFromBody <TSEmail> .FromBody(req, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); if (tsEmail is null) { await CosmosAPI.cosmosDBClientError.AddErrorLog(Guid.Empty, "tsEmail is null", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); } List <WebApiUserTypesEnum> localAllowedRoles = new List <WebApiUserTypesEnum> { WebApiUserTypesEnum.NotAuthorized, WebApiUserTypesEnum.Authorized, WebApiUserTypesEnum.Admin }; ClaimsPrincipal User = MyTokenValidator.Authenticate(req, localAllowedRoles, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); Guid UserID = Guid.Parse(LocalFunctions.CmdGetValueFromClaim(User.Claims, "UserID", 10, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()))); await CosmosAPI.cosmosDBClientActivity.AddActivityLog(UserID, "send mail", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); string MachineID = LocalFunctions.CmdGetValueFromClaim(User.Claims, "MachineID", 10, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); TSEmail result = await TodosCosmos.LocalFunctions.SendEmail(tsEmail, req.HttpContext.Connection.RemoteIpAddress.ToString(), MachineID, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())); result.To = string.Empty; result.OperationCode = 0; return(result); }
public static async Task <TSEmail> SendEmail(TSEmail ParTSEmail, string ParIPAddress, string ParMachineID, List <string> CallTrace) { var attr = new EmailAddressAttribute(); if (!attr.IsValid(ParTSEmail.To)) { ParTSEmail.Result = "Error:Email format is not valid!"; return(ParTSEmail); } if (ParTSEmail.To.ToLower().Equals("*****@*****.**")) { ParTSEmail.Result = "Error:Can't sent any email to demo user!"; return(ParTSEmail); } bool MustSaveEmailedCode = false; EmailOperationsEnum tmp_Operation = (EmailOperationsEnum)ParTSEmail.OperationCode; string tmp_Code = string.Empty; switch (tmp_Operation) { case EmailOperationsEnum.Registration: tmp_Code = GlobalFunctions.GetSalt(); if (CmdSendEmailAsync(ParTSEmail.To.Trim(), "Registration", "Hello,\n\nYour code is " + tmp_Code + "\nThank you for registration.\n\nBest Regards,\nSite Administration", AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())).Result) { ParTSEmail.Result = "OK"; MustSaveEmailedCode = true; } else { ParTSEmail.Result = "Error"; MustSaveEmailedCode = false; } break; case EmailOperationsEnum.EmailChange: tmp_Code = GlobalFunctions.GetSalt(); if (CmdSendEmailAsync(ParTSEmail.To.Trim(), "Email change", "Hello,\n\nYour code is " + tmp_Code + "\n\nBest Regards,\nSite Administration", AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())).Result) { ParTSEmail.Result = "OK"; MustSaveEmailedCode = true; } else { ParTSEmail.Result = "Error"; MustSaveEmailedCode = false; } break; case EmailOperationsEnum.PasswordChange: tmp_Code = GlobalFunctions.GetSalt(); if (CmdSendEmailAsync(ParTSEmail.To.Trim(), "Password change", "Hello,\n\nYour code is " + tmp_Code + "\n\nBest Regards,\nSite Administration", AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())).Result) { ParTSEmail.Result = "OK"; MustSaveEmailedCode = true; } else { ParTSEmail.Result = "Error"; MustSaveEmailedCode = false; } break; case EmailOperationsEnum.PasswordRecovery: MustSaveEmailedCode = false; if (CmdSendEmailAsync(ParTSEmail.To.Trim(), "Password Recovery", "Hello,\n\nYour new password is " + ParMachineID + "\n\nPlease change password after login.\n\nBest Regards,\nSite Administration", AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())).Result) { ParTSEmail.Result = "OK"; } else { ParTSEmail.Result = "Error"; } break; case EmailOperationsEnum.TodoReminder: MustSaveEmailedCode = false; if (CmdSendEmailAsync(ParTSEmail.To.Trim(), "Todo Reminder", "Hello,\n\nYour requested todo remind is here.\n\n" + ParMachineID + "\n\nBest Regards,\nSite Administration", AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())).Result) { ParTSEmail.Result = "OK"; } else { ParTSEmail.Result = "Error"; } break; default: break; } if (MustSaveEmailedCode) { CosmosEmailedCode tsEmailedCode = new CosmosEmailedCode { Email = ParTSEmail.To.Trim(), Code = tmp_Code, IPAddress = ParIPAddress, OperationType = ParTSEmail.OperationCode, MachineID = ParMachineID, }; await CmdSaveEmailedCode(tsEmailedCode, AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())); } return(ParTSEmail); }