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"));
            }
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
        }