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));
        }
예제 #2
0
        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);
        }
예제 #4
0
        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));
        }
예제 #6
0
        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"));
            }
        }
예제 #8
0
        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);
        }
예제 #9
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);
            }
        }
예제 #10
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);
            }
        }
예제 #11
0
        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);
        }
예제 #12
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);
        }