예제 #1
0
        public async Task <ActionResult> RegisterAsyce([FromBody] MemberRegisterResource RegisterResource) // 會員註冊
        {
            if (ModelState.IsValid)
            {
                //把註冊資料傳入資料庫
                #region 寫入資料庫
                string authcode = _MailService.GetValidateCode();
                string error    = await _MemberService.Register(RegisterResource, authcode);

                if (error == "信箱已被註冊")
                {
                    return(BadRequest(error));
                }
                #endregion
                if (error == "Success")
                {
                    #region 寄信
                    string CreateTime = DateTime.Now.ToString();
                    //宣告Email驗證用的Url
                    Uri ValidateUrl = new Uri(Url.Link("EmailApi", new { Email = RegisterResource.Email, AuthCode = authcode, CreateTime = CreateTime }));
                    error = await _MailService.RegisterMail(authcode, RegisterResource, ValidateUrl);

                    #endregion
                    return(Ok("信件已寄出"));
                }
                else
                {
                    return(BadRequest("寫入資料庫失敗"));
                }
            }
            else
            {
                return(BadRequest("資料未過驗證"));
            }
        }
예제 #2
0
        public async Task <string> Register(MemberRegisterResource RegisterResource, string AuthCode)
        {
            string result = string.Empty;
            var    user   = await _context.MemberModel.SingleOrDefaultAsync(b => b.Email == RegisterResource.Email);

            if (user != null)
            {
                return("信箱已被註冊");
            }
            #region 將資料寫入資料庫
            var member = _mapper.Map <MemberRegisterResource, MemberModel>(RegisterResource);
            var uuid   = Guid.NewGuid().ToString();
            member.Id = uuid;
            //密碼加密
            member.Password          = _tools.HashPassword(member.Password);
            member.AuthCode_Register = AuthCode;
            member.IsAdmin           = false;

            try
            {
                //將資料加入Context
                _context.Add(member);
                //儲存變更
                await _context.SaveChangesAsync();

                result = "Success";
            }
            catch (Exception)
            {
                result = "Error";
            }
            #endregion
            return(result);
        }
예제 #3
0
        public async Task <string> RegisterMail(string authcode, MemberRegisterResource RegisterResource, Uri ValidateUrl)
        {
            string result = string.Empty;

            try
            {
                #region 寄信
                //取得寫好的驗證信範本內容
                var    Webroot    = _HostingEnvironment.WebRootPath;
                var    file       = System.IO.Path.Combine(Webroot, "RegisterMail.html");
                string TempMail   = System.IO.File.ReadAllText(file);
                string CreateTime = DateTime.Now.ToString();
                //藉由Service將使用者資料填入驗證信範本中
                string MailBody = this.GetRegisterMailBody(TempMail, CreateTime, ValidateUrl.ToString().Replace("%3F", "?"));
                //呼叫Service寄出驗證信
                await this.SendRegisterMail(MailBody, RegisterResource.Email);

                #endregion
            }
            catch (Exception)
            {
                result = "寄信失敗";
            }
            return(result);
        }
예제 #4
0
        public async Task <ActionResult <MemberRegisterResource> > GetDataAsync(string Email) // 讀取個人會員資料
        {
            MemberRegisterResource data = await _MemberService.GetData(Email);

            if (data != null)
            {
                return(Ok(data));
            }
            return(BadRequest("查無資料"));
        }
예제 #5
0
        public async Task <MemberRegisterResource> GetData(string Email)
        {
            MemberRegisterResource data = new MemberRegisterResource();

            #region  入資料
            try
            {
                MemberModel MemberData = await _context.MemberModel.SingleOrDefaultAsync(u => u.Email == Email);

                data = _mapper.Map <MemberModel, MemberRegisterResource>(MemberData);
                return(data);
            }
            catch (Exception)
            {
                data = null;
            }
            #endregion
            return(data);
        }
예제 #6
0
        public async Task <ActionResult> ReSendEmail(string Email) // 重新寄送驗證信
        {
            MemberRegisterResource member = await _MemberService.GetData(Email);

            if (member != null)
            {
                #region 寫入資料庫
                string authcode = _MailService.GetValidateCode();
                string error    = await _MemberService.Register(member, authcode);

                #endregion
                #region 寄信
                string CreateTime = DateTime.Now.ToString();
                //宣告Email驗證用的Url
                Uri ValidateUrl = new Uri(Url.Link("EmailApi", new { Email = member.Email, AuthCode = authcode, CreateTime = CreateTime }));
                await _MailService.RegisterMail(authcode, member, ValidateUrl);

                #endregion
                return(Ok("寄信成功"));
            }
            return(BadRequest("尚未註冊!"));
        }
예제 #7
0
        public async Task <ActionResult> ForgetPassword(string email) // 忘記密碼
        {
            MemberRegisterResource data = await _MemberService.GetData(email);

            if (data != null)
            {
                #region 寄信
                string password = await _MemberService.GetPassword(email);

                string result = await _MailService.ForgetPasswordMail(data.Name, password, data.Email);

                #endregion
                if (result == "寄信成功")
                {
                    return(Ok(result));
                }
                return(BadRequest(result));
            }
            else
            {
                return(BadRequest("無此帳號"));
            }
        }