Exemplo n.º 1
0
        public ActionResult Login(string returnUrl, LoginPageMessage message)
        {
            if (returnUrl == "/Account/LogOff")
            {
                return(Redirect("/"));
            }

            ViewBag.Message   = message;
            ViewBag.ReturnUrl = returnUrl;
            return(View());
        }
Exemplo n.º 2
0
        public async Task <ActionResult> GetPassword(GetPasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var employee = ERSAIDB.Employees.FirstOrDefault(e => e.BadgeNumber == model.BadgeNumber);
                if (employee == null)
                {
                    ModelState.AddModelError("", "No employee with specified badge number");
                    return(View(model));
                }
                if (employee.BirthDate?.Date != model.BirthDate?.Date)
                {
                    ModelState.AddModelError("", "Wrong date of birth");
                    return(View(model));
                }
                var payslipUser = ERSAIDB.PersonalAccountUsers.FirstOrDefault(u => u.Badge == employee.BadgeNumber);
                payslipUser = payslipUser ?? ERSAIDB.PersonalAccountUsers.Add(new DataModels.ERSAI.PersonalAccountUser()
                {
                    Badge        = employee.BadgeNumber,
                    ModifiedDate = DateTime.Now
                });

                /*payslipUser.AppUser = payslipUser.AppUser ?? new AppUser()
                 * {
                 *  SecurityStamp = Guid.NewGuid().ToString(),
                 *  UserName = employee.BadgeNumber
                 * };*/
                var newPassword = payslipUser.SetNewPassword();
                ERSAIDB.SaveChanges();
                bool mailSent = false, SMSSent = false;

                if (App.SMTPClient != null)
                {
                    try
                    {
                        App.SMTPClient.TrySendEmail(new IntegrationClients.SMTP.EmailMessage()
                        {
                            Body    = $"Your new password is {newPassword}",
                            Header  = IntegrationClients.SMTP.MessageHeader.GetDefault(employee.FullName),
                            Footer  = IntegrationClients.SMTP.MessageFooter.GetDefault(),
                            Subject = "Your new password",
                            To      = payslipUser.ERSAIAccount?.Mail
                        });
                        mailSent = true;
                    }
                    catch
                    {
                        mailSent = false;
                    }
                }
                if (App.SMSClient != null)
                {
                    try
                    {
                        var response = await App.SMSClient.SendSMS(new IntegrationClients.Infobip.SMSMessage()
                        {
                            To   = new[] { payslipUser.MobPhone?.Primary_MobilePhone },
                            Text = $"Your new payslip password is:{Environment.NewLine}{newPassword}"
                        });

                        SMSSent = true;
                    }
                    catch
                    {
                        SMSSent = false;
                    }
                }
                LoginPageMessage message;
                if (SMSSent || mailSent)
                {
                    message = new LoginPageMessage()
                    {
                        CssClass = "positive",
                        Content  = $"Your new password was sent to {(mailSent ? (payslipUser.ERSAIAccount?.Mail + (SMSSent ? " and " : string.Empty)) : string.Empty)}{(SMSSent ? payslipUser.MobPhone?.Primary_MobilePhone : "")}"
                    }
                }
                ;
                else
                {
                    message = new LoginPageMessage()
                    {
                        CssClass = "error",
                        Content  = "We couldn't send your new password to you due to contact information absense. Please, contact your HR"
                    }
                };
                return(RedirectToAction("Login", message));
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }