//Lấy lại mật khẩu public ResponseInfo ForgotPassword(SendEMail email) { ResponseInfo result = new ResponseInfo(); try { var taikhoan = context.TaiKhoans.FirstOrDefault(x => x.Email == email.email && !x.DelFlag); string Username = taikhoan.Username; string token = Common.Common.GetToken(taikhoan.Id); TblTokenResset tokenLG = new TblTokenResset { Id_TaiKhoan = taikhoan.Id, TokenReset = token, ThoiGianHetHan = DateTime.Now.AddHours(12) }; context.ResetPassWords.Add(tokenLG); context.SaveChanges(); token = BaoMat.Base64Encode(token); string Subject = "Password Reset Confirmation for " + Username; string body = "<p>There was recently a request to change the password for your account. </p>" + "<p>If you requested this password change, please reset your password here: </p>" + "<p> https://truyenda.tk/forgot?token=" + token + "</p>" + "<p>If you did not make this request, you can ignore this message and your password will remain the same.</p>"; SendMail.SendGird(email.email, body, Subject); var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.GuiEmailThanhCong); result.TypeMsgError = errorMsg.Type; result.MsgError = errorMsg.Msg; return(result); } catch (Exception e) { throw e; } }
/// <summary> /// Xác thực tài khoản thông qua việc login bằng các tài khoản FB hoặc GG. /// Author : QuyPN - 30/05/2018 - create /// </summary> /// <param name="accessToken">Thông tin cá nhân lấy được từ FB hoặc GG</param> /// <param name="type">type = 1: thông tin từ FB; type = 2: thông tin từ GG</param> /// <returns>Chỗi Json chứa kết quả kiểm tra</returns> /// <remarks> /// Method: GET /// RouterName: homeCheckSocialLogin /// </remarks> public JsonResult LoginBySocialAccount(string accessToken, int type = (int)OtherEnum.TaiKhoanFB) { ResponseInfo response = new ResponseInfo(); try { LoginModel model = new LoginModel(); TblTokenLogin token = model.CheckSocialAccount(type == (int)OtherEnum.TaiKhoanFB ? model.LayThongTinFB(accessToken) : model.LayThongTinGG(accessToken), type); if (token != null) { response.ThongTinBoSung1 = BaoMat.Base64Encode(token.Token); } else { response.Code = (int)CodeResponse.NotAccess; response.MsgNo = (int)MsgNO.XacThucKhongHopLe; } } catch (Exception e) { response.Code = (int)CodeResponse.ServerError; response.MsgNo = (int)MsgNO.ServerError; response.ThongTinBoSung1 = e.Message; } return(Json(response, JsonRequestBehavior.AllowGet)); }
/// <summary> /// Sinh lại token và gửi lại Email theo email của người dùng nhập vàot. /// Author : QuyPN - 20/05/2018 - create /// </summary> /// <param name="Email">Email đã đăng ký do người dùng nhập vào</param> /// <returns>Thông tin về việc gửi mail</returns> public ResponseInfo SendEmail(string Email) { DbContextTransaction transaction = context.Database.BeginTransaction(); try { ResponseInfo result = new ResponseInfo(); TblAccount account = context.Account.FirstOrDefault(x => x.Email == Email && !x.DelFlag); if (account == null) { result.Code = 202; result.MsgNo = (int)MsgNO.EmailKhongTonTai; } else { TblCauHinh cauHinh = Common.LayCauHinh(); account.TokenActive = Common.GetToken(account.Id); account.TimeOfToken = DateTime.Now.AddHours(cauHinh.ThoiGianTonTaiToken); context.SaveChanges(); SendEmail(account); result.MsgNo = (int)MsgNO.DaGuiMailKichHoat; result.ThongTinBoSung1 = BaoMat.Base64Encode(account.TokenActive); } transaction.Commit(); return(result); } catch (Exception e) { transaction.Rollback(); throw e; } }
/// <summary> /// Hàm gửi mail kích hoạt tài khoản theo email đã đăng ký /// Author : QuyPN - 20/05/2018 - create /// </summary> /// <param name="account">Tài khoản ddowwcj lưu trong DB</param> public void SendEmail(TblAccount account) { try { string lang = Common.GetLang(); TblBieuMau bieuMau = context.BieuMau.FirstOrDefault(x => x.Id == (int)TemplateEnum.ActiveAccount && x.Lang == lang && !x.DelFlag); if (bieuMau != null) { bieuMau.NoiDung = bieuMau.NoiDung.Replace("#linkActive", Common.domain + @"kich-hoat-tai-khoan?token=" + BaoMat.Base64Encode(account.TokenActive) + "&&username=" + account.Username); EmailService.Send(account.Email, bieuMau.TenBieuMau, bieuMau.NoiDung); } } catch (Exception e) { throw e; } }
/// <summary> /// Kiểm tra thông tin tài khoản người dùng nhập vào có đúng hay không /// Author : QuyPN - 28/05/2018 - create /// </summary> /// <param name="account">Đối tượng chưa thông tin tài khoản</param> /// <returns>Đối tượng ResponseInfo chứa thông tin của việc kiểm tra</returns> public ResponseInfo CheckAccount(Account account) { try { ResponseInfo result = new ResponseInfo(); TblCauHinh cauHinh = context.CauHinh.FirstOrDefault(x => x.Id == (int)OtherEnum.IdCauHinh); TblAccount taiKhoan = context.Account.FirstOrDefault(x => x.Username == account.Username && !x.DelFlag); if (taiKhoan == null) { taiKhoan = context.Account.FirstOrDefault(x => x.Email == account.Username && !x.DelFlag); } if (taiKhoan == null) { result.MsgNo = (int)MsgNO.KhongCoTaiKhoan; result.Code = 202; } else if (taiKhoan.KhoaTaiKhoanDen > DateTime.Now) { result.MsgNo = (int)MsgNO.TaiKhoanBiKhoa; result.Code = 203; result.ThongTinBoSung1 = taiKhoan.KhoaTaiKhoanDen.ToString("HH:mm dd/MM/yyyy"); } else if (!taiKhoan.IsActived) { result.MsgNo = (int)MsgNO.ChuaKichHoatTaiKhoan; result.Code = 204; new RegisterModel().SendEmail(taiKhoan); // Thiếu code gửi email } else if (taiKhoan.Password != BaoMat.GetMD5(account.Password)) { taiKhoan.SoLanDangNhapSai += 1; result.MsgNo = (int)MsgNO.MatKhauKhongDung; result.ThongTinBoSung1 = taiKhoan.SoLanDangNhapSai + ""; result.ThongTinBoSung2 = cauHinh.SoLanChoPhepDangNhapSai + ""; result.ThongTinBoSung3 = cauHinh.ThoiGianKhoa + ""; if (taiKhoan.SoLanDangNhapSai == cauHinh.SoLanChoPhepDangNhapSai) { taiKhoan.SoLanDangNhapSai = 0; taiKhoan.KhoaTaiKhoanDen = DateTime.Now.AddHours(cauHinh.ThoiGianKhoa); result.MsgNo = (int)MsgNO.SaiQuaSoLanChoPhep; result.ThongTinBoSung1 = cauHinh.SoLanChoPhepDangNhapSai + ""; result.ThongTinBoSung2 = taiKhoan.KhoaTaiKhoanDen.ToLongTimeString(); } context.SaveChanges(); result.Code = 205; } else { taiKhoan.SoLanDangNhapSai = 0; //Chứa thông tin chuỗi token string token = Common.GetToken(taiKhoan.Id); context.TokenLogin.Add(new TblTokenLogin { IdAccount = taiKhoan.Id, Token = token, ThoiGianTonTai = DateTime.Now.AddHours(cauHinh.ThoiGianTonTaiToken) }); result.ThongTinBoSung1 = BaoMat.Base64Encode(token); context.SaveChanges(); } return(result); } catch (Exception e) { throw e; } }
/// <summary> /// Kiểm tra thông tin tài khoản người dùng nhập vào có đúng hay không /// Author : HoangNM - 28/02/2019 - create /// </summary> /// <param name="account">Đối tượng chưa thông tin tài khoản</param> /// <returns>Đối tượng ResponseInfo chứa thông tin của việc kiểm tra</returns> public ResponseInfo CheckAccount(TaiKhoan account) { try { ResponseInfo result = new ResponseInfo(); TblTaiKhoan taiKhoan = context.TaiKhoans.FirstOrDefault(x => x.Username == account.Username); if (taiKhoan == null) { var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.KhongCoTaiKhoan); result.Code = 400; result.TypeMsgError = errorMsg.Type; result.MsgError = errorMsg.Msg; } else if ((taiKhoan.hash_Pass) != BaoMat.GetMD5(BaoMat.GetSimpleMD5(account.Password), taiKhoan.salt_Pass)) { result.Code = 400; var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.MatKhauSai); result.TypeMsgError = errorMsg.Type; result.MsgError = errorMsg.Msg; } else { //Chứa thông tin chuỗi token string token = Common.Common.GetToken(taiKhoan.Id); TblToken tokenLG = new TblToken { Id_TaiKhoan = taiKhoan.Id, TokenTaiKhoan = token, ThoiGianHetHan = DateTime.Now.AddHours(24) }; context.Tokens.Add(tokenLG); context.SaveChanges(); result.IsSuccess = true; result.Data = new { Profile = new Profile() { Id_TrangThai = taiKhoan.Id_TrangThai, TenTrangThai = taiKhoan.TrangThaiTaiKhoan.TenTrangThai, Id_NhomDich = taiKhoan.Id_NhomDich, TenNhomDich = taiKhoan.NhomDich.TenNhomDich, Username = taiKhoan.Username, Email = taiKhoan.Email, Id_Face = taiKhoan.Id_Face, Id_Google = taiKhoan.Id_Google, GioiTinh = taiKhoan.ThongTinNguoiDung.GioiTinh, Ten = taiKhoan.ThongTinNguoiDung.Ten, NgaySinh = (DateTime)taiKhoan.ThongTinNguoiDung.NgaySinh, NgayHetHan = tokenLG.ThoiGianHetHan, Permissions = new QuyenProFile { TenvaiTro = taiKhoan.PhanQuyen.TenVaiTro, Id_VaiTro = taiKhoan.PhanQuyen.Id } }, Token = BaoMat.Base64Encode(token) }; result.ThongTinBoSung1 = BaoMat.Base64Encode(token); var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.DangNhapThanhCong); result.TypeMsgError = errorMsg.Type; result.MsgError = errorMsg.Msg; } return(result); } catch (Exception e) { throw e; } }
/// <summary> /// Tạo tài khoản cho người dùng dựa vào thông tin đã cung cấp, sau đó gửi mail kích hoạt tài khoản. /// Author : QuyPN - 20/05/2018 - create /// </summary> /// <param name="newAccount">Thông tin tạo tài khoản của người dùng</param> /// <returns>Thông tin về việc tạo tài khoản thành công hay thất bại</returns> public ResponseInfo TaoAccount(NewAccount newAccount) { DbContextTransaction transaction = context.Database.BeginTransaction(); try { ResponseInfo result = new ResponseInfo(); TblCauHinh cauHinh = Common.LayCauHinh(); // Kiểm tra xem username đã tồn tại hay chưa TblAccount account = context.Account.FirstOrDefault(x => x.Username == newAccount.Username && !x.DelFlag); if (account == null) { // Kiểm tra xem email đã tồn tại hay chưa account = context.Account.FirstOrDefault(x => x.Email == newAccount.Email && !x.DelFlag); if (account == null) { // Tạo user mới TblUser user = new TblUser { Ho = newAccount.Ho, Ten = newAccount.Ten, Avatar = Common.defaultAvata, GioiTinh = newAccount.GioiTinh, NgaySinh = newAccount.NgaySinh, SoDienThoai = "", CMND = "", DiaChi = "" }; // Tạo tài khoản đăng nhập cho user account = new TblAccount { Username = newAccount.Username, Password = BaoMat.GetMD5(newAccount.Password), Email = newAccount.Email, TokenActive = Common.GetToken(newAccount.Username), IsActived = false, IsActiveEmail = false, TimeOfToken = DateTime.Now.AddHours(cauHinh.ThoiGianTonTaiToken), SoLanDangNhapSai = 0, KhoaTaiKhoanDen = DateTime.Now }; // Cho tài khoản thuộc vào 1 group account.GroupOfAccount.Add(new TblGroupOfAccount { IdGroup = (int)GroupAccount.User }); user.Account.Add(account); context.User.Add(user); // Lưu vào CSDL context.SaveChanges(); // Tiến hành gửi mail SendEmail(account); result.ThongTinBoSung1 = BaoMat.Base64Encode(account.TokenActive); } else { result.Code = 202; result.MsgNo = 37; } } else { result.Code = 202; result.MsgNo = 36; } transaction.Commit(); return(result); } catch (Exception e) { transaction.Rollback(); throw e; } }