Exemplo n.º 1
0
        public IActionResult Test(ForgotVM forgotVM)
        {
            var txt = "Test";

            byte[] encodedBytes = Encoding.Unicode.GetBytes(txt);
            string encodedTxt   = Convert.ToBase64String(encodedBytes);

            byte[] decodedBytes = Convert.FromBase64String(Convert.ToBase64String(Encoding.Unicode.GetBytes(txt)));
            string decodedTxt   = Encoding.UTF8.GetString(decodedBytes);
            string decodedTxt2  = Encoding.Unicode.GetString(decodedBytes);

            var obj = new
            {
                Id   = "202020",
                Name = "Joni bro",
                NIK  = 212321,
            };
            var encode    = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(forgotVM)));
            var getdecode = WebEncoders.Base64UrlDecode(encode);
            var getString = Encoding.UTF8.GetString(getdecode);
            var decode    = JsonConvert.DeserializeObject(getString);

            return(Ok(new {
                encByte = encodedBytes,
                encTxt = encodedTxt,
                decByte = decodedBytes,
                dectxt = decodedTxt,
                dectxt2 = decodedTxt2,
                tesEnc = encode,
                tesDec = decode,
            }));
        }
Exemplo n.º 2
0
        public IActionResult ChangePassword(ForgotVM forgotVM)
        {
            var json        = JsonConvert.SerializeObject(forgotVM);
            var buffer      = System.Text.Encoding.UTF8.GetBytes(json);
            var byteContent = new ByteArrayContent(buffer);

            byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

            HttpResponseMessage result = null;

            if (forgotVM.Token == null)
            {
                result = client.PostAsync("forgot/", byteContent).Result;
                if (result.IsSuccessStatusCode)
                {
                    SendLogs(forgotVM.Email + " Forgot Password", forgotVM.Email);
                    return(Json(result));
                }
                var getdata = result.Content.ReadAsStringAsync().Result;
                return(Json(new { result, msg = getdata }));
            }
            else if (forgotVM.Token != null)
            {
                result = client.PostAsync("reset?token=" + forgotVM.Token, byteContent).Result;
                if (result.IsSuccessStatusCode)
                {
                    SendLogs(HttpContext.Session.GetString("email") + " Forgot Password", HttpContext.Session.GetString("email"));
                    return(Json(result));
                }
                var getdata = result.Content.ReadAsStringAsync().Result;
                return(Json(new { result, msg = getdata }));
            }
            return(Redirect("/login"));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Reset(string token, ForgotVM forgotVM)
        {
            var getToken   = _context.Users.Where(x => x.Token == token);
            var tokenCount = getToken.Count();

            if (tokenCount > 0)
            {
                var getdecode = WebEncoders.Base64UrlDecode(token);
                var getString = Encoding.UTF8.GetString(getdecode);
                var getDObj   = JsonConvert.DeserializeObject <ForgotVM>(getString);
                var decode    = JsonConvert.DeserializeObject <ForgotVM>(Encoding.UTF8.GetString(WebEncoders.Base64UrlDecode(token)));
                var getUser   = _context.Users.Include("Employee").Where(x => x.Email == decode.Email);
                var cekCount  = getUser.Count();
                if (cekCount == 1)
                {
                    if (ModelState.IsValid)
                    {
                        var getUserId = await getUser.SingleOrDefaultAsync();

                        var user = new UserVM
                        {
                            Email    = decode.Email,
                            Password = Bcrypt.HashPassword(forgotVM.Password),
                            Token    = null,
                        };
                        var create = _repo.Update(user, getUserId.Id);
                        if (create > 0)
                        {
                            Sendlog(decode.Email + " Reset Password", forgotVM.Email);
                            return(Ok("Reset Password Successfully"));
                        }
                        return(BadRequest("Reset Password Not Successfully"));
                    }
                    return(BadRequest("Something wrong"));
                }
                return(BadRequest("Email Doesn't Exists "));
            }
            return(BadRequest("Token Doesn't Exists "));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Forgot(ForgotVM forgotVM)
        {
            var getUser  = _context.Users.Include("Employee").Where(x => x.Email == forgotVM.Email);
            var cekCount = getUser.Count();

            if (cekCount != 0)
            {
                if (ModelState.IsValid)
                {
                    var getUserId = await getUser.SingleOrDefaultAsync();

                    var code = randDig.GenerateRandom();

                    //var user = await _userManager.FindByEmailAsync(forgotVM.Email);
                    //var token = await _userManager.GeneratePasswordResetTokenAsync(user);
                    //var callback = Url.Action(nameof(ResetPassword), nameof(AccountController), new { token, email = user.Email }, Request.Scheme);

                    var encode = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(forgotVM)));
                    //var link = Url.Action("ResetPassword", "Auth", new { email = forgotVM.Email, encode }, Request.Scheme);
                    //var link =  "<a href='" + Url.Action("ResetPassword", "Auth", new { email = forgotVM.Email, encode }, "http") + "'>Reset Password</a>";
                    var link = baseURL.UsrManage + "reset?token=" + encode;

                    var fill = "Hi " + getUserId.Employee.Name + "\n\n"
                               + "Click this link for Reset Password : \n"
                               + "<a href=" + link + ">Reset Password</a>"
                               + "\n\nThank You";

                    MailMessage mm = new MailMessage("*****@*****.**", forgotVM.Email, "Forgot Password ", fill);
                    mm.BodyEncoding = UTF8Encoding.UTF8;
                    mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
                    string str1 = "gmail.com";
                    string str2 = attrEmail.mail;

                    if (str2.Contains(str1))
                    {
                        try
                        {
                            client.Port                  = 587;
                            client.Host                  = "smtp.gmail.com";
                            client.EnableSsl             = true;
                            client.Timeout               = 10000;
                            client.DeliveryMethod        = SmtpDeliveryMethod.Network;
                            client.UseDefaultCredentials = false;
                            client.Credentials           = new NetworkCredential(attrEmail.mail, attrEmail.pass);
                            client.Send(mm);
                        }
                        catch (Exception ex)
                        {
                            return(BadRequest("SMTP Gmail Error " + ex));
                        }
                    }
                    else if (!str2.Contains(str1))
                    {
                        try
                        {
                            client.Port        = 25;
                            client.Credentials = new NetworkCredential(attrEmail.mail, attrEmail.pass);
                            client.EnableSsl   = false;
                            client.Send(mm);
                        }
                        catch (Exception ex)
                        {
                            return(BadRequest("SMTP Email Error " + ex));
                        }
                    }
                    var user = new UserVM
                    {
                        Email    = forgotVM.Email,
                        Password = null,
                        Token    = encode,
                    };
                    var create = _repo.Update(user, getUserId.Id);
                    if (create > 0)
                    {
                        Sendlog(forgotVM.Email + " send link to email Successfully", forgotVM.Email);
                        return(Ok("Please check your email"));
                    }
                }
                return(BadRequest("Not Successfully"));
            }
            return(BadRequest("Email Doesn't Exists "));
        }