示例#1
0
        public async Task <IActionResult> Edit(RequestEditMember member)
        {
            var   edit  = _context.Members.Where(r => r.ID == member.ID);
            Regex regex = new Regex(@"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{10,30}$");

            if (edit.Any())
            {
                var data = edit.FirstOrDefault();
                if (data.Password != StringEncryptExtension.aesEncryptBase64(member.OldPassword, data.Email))
                {
                    return(StatusCode(Status400BadRequest, new ResponseMessage {
                        Message = "舊密碼輸入錯誤"
                    }));
                }

                if (!regex.IsMatch(member.Password))
                {
                    return(StatusCode(Status400BadRequest, new ResponseMessage {
                        Message = "字串長度在 10 ~ 30 個字母之間,且至少一個小寫英文字母、大寫英文字母和數字。"
                    }));
                }

                if (member.Password != member.chkPassword)
                {
                    return(StatusCode(Status400BadRequest, new ResponseMessage {
                        Message = "密碼與確認密碼不符合"
                    }));
                }

                try
                {
                    data.Password = StringEncryptExtension.aesEncryptBase64(member.Password, data.Email);
                    data.Name     = member.Name;
                    data.IsVerify = member.IsVerify;
                    await _context.SaveChangesAsync();

                    if (!string.IsNullOrEmpty(member.OldPassword))
                    {
                        HttpContext.Session.Remove("JWToken");
                    }
                    return(Ok());
                }
                catch (Exception ex)
                {
                    return(StatusCode(Status400BadRequest, new ResponseMessage {
                        Message = "修改資料失敗"
                    }));
                }
            }
            else
            {
                return(StatusCode(Status400BadRequest, new ResponseMessage {
                    Message = "查無資料"
                }));
            }
        }
示例#2
0
        public async Task <IActionResult> Forget(string Account)
        {
            var member = _context.Members.Where(r => r.Email == Account);

            if (member.Any())
            {
                string newPassword = RandomPasswordExtension.CreateRandomPassword();
                try
                {
                    var message = new MimeMessage();
                    message.From.Add(new MailboxAddress("胡家幸福蜂蜜管理人員", "*****@*****.**"));
                    message.To.Add(new MailboxAddress(member.FirstOrDefault().Name, member.FirstOrDefault().Email));
                    message.Subject = "忘記密碼重設";

                    message.Body = new TextPart("plain")
                    {
                        Text = @"你好,你的新密碼為" + newPassword + ",請使用此密碼重新登入並重設密碼。"
                    };

                    using (var client = new SmtpClient())
                    {
                        // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
                        client.ServerCertificateValidationCallback = (s, c, h, e) => true;

                        client.Connect("smtp.office365.com", 587, false);

                        // Note: only needed if the SMTP server requires authentication
                        client.Authenticate("*****@*****.**", "RGIRaal2");

                        await client.SendAsync(message);

                        client.Disconnect(true);
                    }
                }
                catch (Exception ex)
                {
                    return(StatusCode(Status400BadRequest, new ResponseMessage {
                        Message = "發信失敗"
                    }));
                }

                member.FirstOrDefault().Password = StringEncryptExtension.aesEncryptBase64(newPassword, member.FirstOrDefault().Email);
                await _context.SaveChangesAsync();
            }


            return(Ok());
        }
示例#3
0
        public async Task <IActionResult> Create(RequestMembers member)
        {
            Regex regex = new Regex(@"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{10,30}$");

            if (!regex.IsMatch(member.Password))
            {
                return(StatusCode(Status400BadRequest, new ResponseMessage {
                    Message = "字串長度在 10 ~ 30 個字母之間,且至少一個小寫英文字母、大寫英文字母和數字。"
                }));
            }

            if (member.Password != member.CheckPassword)
            {
                return(StatusCode(Status400BadRequest, new ResponseMessage {
                    Message = "密碼與確認密碼不符合"
                }));
            }
            member.Password = StringEncryptExtension.aesEncryptBase64(member.Password, member.Email);

            try
            {
                var mem = new Members()
                {
                    Email    = member.Email,
                    IsVerify = member.IsVerify,
                    Name     = member.Name,
                    Password = member.Password
                };
                _context.Add(mem);
                await _context.SaveChangesAsync();

                return(Ok());
            }
            catch (Exception ex)
            {
                return(StatusCode(Status400BadRequest, new ResponseMessage {
                    Message = "註冊失敗"
                }));
            }
        }
示例#4
0
        public IActionResult Login(RequestLogin login)
        {
            login.Password = StringEncryptExtension.aesEncryptBase64(login.Password, login.Account);
            var target = _context.Members.SingleOrDefault(r => r.Email == login.Account && r.Password == login.Password && r.IsVerify == true);

            if (target != null)
            {
                TokenProvider _tokenProvider = new TokenProvider();
                //Authenticate user
                var userToken = _tokenProvider.LoginUser(target);
                if (userToken != null)
                {
                    //Save token in session object
                    HttpContext.Session.SetString("JWToken", userToken);
                }
                return(Redirect("~/Members/Index"));
            }
            else
            {
                return(StatusCode(Status400BadRequest, new ResponseMessage {
                    Message = "登入失敗"
                }));
            }
        }