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 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 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); }