/// <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> /// 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> /// So khớp thông tin đăng nhập có thừ FB hoặc GG với thông tin tài khoản của hệ thống. /// Author : QuyPN - 30/05/2018 - create /// </summary> /// <param name="socialAccount">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>Đối tượng chứ token login của tài khoản trong hệ thống</returns> public TblTokenLogin CheckSocialAccount(SocialAccount socialAccount, int type = (int)OtherEnum.TaiKhoanFB) { DbContextTransaction transaction = context.Database.BeginTransaction(); try { if (socialAccount.Id != "") { TblAccount account = context.Account.FirstOrDefault(x => x.Email == socialAccount.Email && !x.DelFlag); if (account == null) { account = context.Account.FirstOrDefault(x => ( (type == (int)OtherEnum.TaiKhoanFB && x.IdFacebook == socialAccount.Id) || (type != (int)OtherEnum.TaiKhoanFB && x.IdGoogle == socialAccount.Id)) && !x.DelFlag); if (account != null && socialAccount.Email != "") { account.Email = socialAccount.Email; } } else { if (type == (int)OtherEnum.TaiKhoanFB) { account.IdFacebook = socialAccount.Id; } else { account.IdGoogle = socialAccount.Id; } } if (account == null) { TblUser user = new TblUser { Ho = socialAccount.FirstName, Ten = socialAccount.LastName, Avatar = "http://2.bp.blogspot.com/-Fl8NZJZFq6w/U02LSHQ7iII/AAAAAAAAAHg/zpzikQfynpM/s1600/WAPHAYVL.MOBI-CONDAU+(11).gif", GioiTinh = socialAccount.Gender, NgaySinh = socialAccount.Birthday, SoDienThoai = socialAccount.PhoneNumber, CMND = "", DiaChi = "" }; account = new TblAccount { Username = "", Password = "", Email = socialAccount.Email, TokenActive = "", IsActived = true, IsActiveEmail = true, SoLanDangNhapSai = 0, KhoaTaiKhoanDen = DateTime.Now }; if (type == (int)OtherEnum.TaiKhoanFB) { account.IdFacebook = socialAccount.Id; } else { account.IdGoogle = socialAccount.Id; } account.GroupOfAccount.Add(new TblGroupOfAccount { IdGroup = (int)GroupAccount.User }); user.Account.Add(account); context.User.Add(user); } account.SoLanDangNhapSai = 0; account.IsActived = true; TblCauHinh cauHinh = context.CauHinh.FirstOrDefault(x => x.Id == (int)OtherEnum.IdCauHinh); TblTokenLogin tokenLogin = new TblTokenLogin { Token = Common.GetToken(account.Id), ThoiGianTonTai = DateTime.Now.AddHours(cauHinh.ThoiGianTonTaiToken) }; account.TokenLogin.Add(tokenLogin); context.SaveChanges(); transaction.Commit(); return(tokenLogin); } else { return(null); } } catch (Exception e) { transaction.Rollback(); 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; } }