Beispiel #1
0
        public async Task <ActionResult> ChangePassword(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "user/changepassword")] HttpRequest req,
            ILogger log)
        {
            TSUser tsUser = await MyFromBody <TSUser> .FromBody(req, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            ClaimsPrincipal User = MyTokenValidator.Authenticate(req, AllowedRoles, 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, "change password", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));


            string MachineID = LocalFunctions.CmdGetValueFromClaim(User.Claims, "MachineID", 10, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            string IPAddress = req.HttpContext.Connection.RemoteIpAddress.ToString();



            CosmosEmailedCode emailedCode = await CosmosAPI.cosmosDBClientEmailedCode.FindEmaiedCode(tsUser.Email, IPAddress, MachineID, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            if (emailedCode != null)
            {
                if (emailedCode.Code.ToLower().Equals(tsUser.EmailedCode))
                {
                    await CosmosAPI.cosmosDBClientEmailedCode.DeleteEmailedCodes(tsUser.Email, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));


                    TSUser currUser = (await CosmosAPI.cosmosDBClientUser.FindUserByID(UserID, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()))).toTSUser();

                    currUser.Password = tsUser.Password;


                    if (await CosmosAPI.cosmosDBClientUser.UpdateUser(currUser, false, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())))
                    {
                        return(new OkObjectResult("OK"));
                    }
                    else
                    {
                        return(new OkObjectResult("Error:Can't add new user!"));
                    }
                }
                else
                {
                    return(new OkObjectResult("Error:Emailed code is not correct!"));
                }
            }
            else
            {
                await CosmosAPI.cosmosDBClientError.AddErrorLog(Guid.Empty, "EmaiedCode expected but not found", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

                return(new OkObjectResult("Error:Server can't find emailed code to compare!"));
            }
        }
        public async Task <bool> AddEmailedCode(CosmosEmailedCode tsEmailedCode, List <string> CallTrace)
        {
            try
            {
                return(await cosmosDBClientBase.AddItemAsync(tsEmailedCode, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())));
            }
            catch (CosmosException ex)
            {
                await CosmosAPI.cosmosDBClientError.AddErrorLog(Guid.Empty, ex.Message, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod()));

                return(false);
            }
        }
Beispiel #3
0
        private static async Task <bool> CmdSaveEmailedCode(CosmosEmailedCode ParEmailedCode, List <string> CallTrace)
        {
            bool result = true;

            try
            {
                await CosmosAPI.cosmosDBClientEmailedCode.DeleteEmailedCodes(ParEmailedCode.Email, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod()));

                result = await CosmosAPI.cosmosDBClientEmailedCode.AddEmailedCode(ParEmailedCode, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod()));
            }
            catch (Exception ex)
            {
                await CosmosAPI.cosmosDBClientError.AddErrorLog(Guid.Empty, ex.Message, AddThisCaller(CallTrace, MethodBase.GetCurrentMethod()));

                result = false;
            }

            return(result);
        }
 public async Task <CosmosEmailedCode> GetEmailedCode(CosmosEmailedCode tsEmailedCode, List <string> CallTrace)
 {
     return(await cosmosDBClientBase.GetItemAsync(tsEmailedCode, pkPrefix, LocalFunctions.AddThisCaller(CallTrace, MethodBase.GetCurrentMethod())));
 }
Beispiel #5
0
        public async Task <ActionResult> Add(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "user/add")] HttpRequest req,
            ILogger log)
        {
            TSUser tsUser = await MyFromBody <TSUser> .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, "post user", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));


            string MachineID = LocalFunctions.CmdGetValueFromClaim(User.Claims, "MachineID", 10, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            string IPAddress = req.HttpContext.Connection.RemoteIpAddress.ToString();



            CosmosEmailedCode emailedCode = await CosmosAPI.cosmosDBClientEmailedCode.FindEmaiedCode(tsUser.Email, IPAddress, MachineID, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

            if (emailedCode != null)
            {
                if (emailedCode.Code.ToLower().Equals(tsUser.EmailedCode))
                {
                    await CosmosAPI.cosmosDBClientEmailedCode.DeleteEmailedCodes(tsUser.Email, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

                    tsUser.ID         = Guid.NewGuid();
                    tsUser.CreateDate = DateTime.Now;


                    if (await CosmosAPI.cosmosDBClientUser.AddUser(tsUser, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod())))
                    {
                        await CosmosAPI.cosmosDBClientSetting.UpdateSettingCounter(Guid.Empty, "UsersCount", true, TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

                        return(new OkObjectResult("OK"));
                    }
                    else
                    {
                        return(new OkObjectResult("Error:Can't add new user!"));
                    }
                }
                else
                {
                    return(new OkObjectResult("Error:Emailed code is not correct!"));
                }
            }
            else
            {
                await CosmosAPI.cosmosDBClientError.AddErrorLog(Guid.Empty, "EmaiedCode expected but not found", TodosCosmos.LocalFunctions.AddThisCaller(new List <string>(), MethodBase.GetCurrentMethod()));

                return(new OkObjectResult("Error:Server can't find emailed code to compare!"));
            }
        }
Beispiel #6
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);
        }