コード例 #1
0
        public void TheoDoiTruyen(AddBookMark data)
        {
            ResponseInfo response = new ResponseInfo();

            try
            {
                string           token            = HttpContext.Current.Request.Cookies["ToKen"].Value.Replace("%3d", "=");
                string           Token            = BaoMat.Base64Decode(token);
                TblToken         TblToken         = context.Tokens.FirstOrDefault(x => x.TokenTaiKhoan == Token);
                int              ID_TaiKhoan      = TblToken.Id_TaiKhoan;
                TblTheoDoiTruyen tblTheoDoiTruyen = context.TheoDoiTruyens.FirstOrDefault(x => x.Id_NguoiDoc == ID_TaiKhoan && x.Id_Truyen == data.id_Truyen);
                if (tblTheoDoiTruyen == null)
                {
                    context.TheoDoiTruyens.Add(new TblTheoDoiTruyen
                    {
                        Id_NguoiDoc = ID_TaiKhoan,
                        Id_Truyen   = data.id_Truyen
                    });
                    context.SaveChanges();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
コード例 #2
0
ファイル: LoginModel.cs プロジェクト: hungud/truyenda-backend
        //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;
            }
        }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
        /// <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;
            }
        }
コード例 #5
0
        /// <summary>
        /// Lấy thông tin tài khoản đang đăng nhập
        /// Author       :   HoangNM - 29/03/2019 - create
        /// </summary>
        /// <param name="token">
        /// token của account đăng nhập.
        /// </param>
        /// <returns>
        /// Thông tin tài khoản
        /// </returns>

        public GetAccount GetAccount(string token)
        {
            string     Token      = BaoMat.Base64Decode(token);
            TblToken   TblToken   = context.Tokens.FirstOrDefault(x => x.TokenTaiKhoan == Token);
            GetAccount getAccount = context.TaiKhoans.Where(x => x.Id == TblToken.Id_TaiKhoan && !x.DelFlag).Select(x => new GetAccount
            {
                Email        = x.Email,
                GioiTinh     = x.ThongTinNguoiDung.GioiTinh,
                Id_Face      = x.Id_Face,
                Id_google    = x.Id_Google,
                Id_TrangThai = x.Id_TrangThai,
                TenTrangThai = x.TrangThaiTaiKhoan.TenTrangThai,
                Id_NhomDich  = x.Id_NhomDich,
                TenNhom      = x.NhomDich.TenNhomDich,
                Username     = x.Username,
                Ten          = x.ThongTinNguoiDung.Ten,
                NgaySinh     = x.ThongTinNguoiDung.NgaySinh,
                NgayHetHan   = TblToken.ThoiGianHetHan,
                Token        = token
            }).FirstOrDefault();
            long TongQuyen = (long)context.TaiKhoans.Where(x => x.Id == TblToken.Id_TaiKhoan && !x.DelFlag).FirstOrDefault().PhanQuyen.TongQuyen;

            getAccount.Permissions = context.Quyens.Where(x => !x.DelFlag && ((long)x.BitQuyen & TongQuyen) != 0).Select(x => new AllPermission
            {
                TenQuyen = x.TenQuyen,
                Id_Quyen = x.Id
            }).ToList();

            return(getAccount);
        }
コード例 #6
0
 /// <summary>
 /// Xóa token login của user khi user logout
 /// Author       :   QuyPN - 28/05/2018 - create
 /// </summary>
 /// <returns>true nếu xóa thành công</returns>
 public bool RemoveToken(string token)
 {
     try
     {
         token = BaoMat.Base64Decode(token);
         context.TokenLogin.Where(x => x.Token == token).Delete();
         context.TokenLogin.Where(x => x.ThoiGianTonTai < DateTime.Now).Delete();
         return(true);
     }
     catch (Exception e)
     {
         throw e;
     }
 }
コード例 #7
0
 /// <summary>
 /// Kích hoạt tài khoản và đưa về trang view thông báo.
 /// Author       :   QuyPN - 20/05/2018 - create
 /// </summary>
 /// <param name="token">Token đang mã hóa Base64 được gửi đi trong mail</param>
 /// <param name="username">Tên đăng nhập mà user đăng ký được gửi kèm trong mail</param>
 /// <returns>Trả về trang thông báo kích hoạt tài khoản thành công hoặc trang lỗi</returns>
 /// <remarks>
 /// Method: GET
 /// RouterName: KichHoatTaiKhoan
 /// </remarks>
 public ActionResult AciveAccount(string token, string username)
 {
     try
     {
         string tokenCookies = Common.GetCookie("tokenAccount");
         if (tokenCookies == "" || tokenCookies != BaoMat.Base64Decode(token))
         {
             return(RedirectToAction("Index", "Home"));
         }
         ResponseInfo response = new RegisterModel().ActiveAccount(token, username);
         return(View("ActiveAccount", response));
     }
     catch (Exception e)
     {
         return(RedirectToAction("Error", "Error", new { area = "error", error = e.Message }));
     }
 }
コード例 #8
0
ファイル: LoginModel.cs プロジェクト: hungud/truyenda-backend
        //Lấy lại mật khẩu
        public ResponseInfo ChangePassword(ChangePass data)
        {
            ResponseInfo result = new ResponseInfo();

            try
            {
                string         Token         = BaoMat.Base64Decode(data.tokenReset);
                TblTokenResset resetPassWord = context.ResetPassWords.FirstOrDefault(x => x.TokenReset == Token && !x.DelFlag);
                if (resetPassWord == null)
                {
                    result.Code = 400;
                    var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.ThayDoiMatKhauThatBai);
                    result.TypeMsgError = errorMsg.Type;
                    result.MsgError     = errorMsg.Msg;
                }
                else if (resetPassWord.ThoiGianHetHan < DateTime.Now)
                {
                    result.Code = 400;
                    var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.TokenResetHetHan);
                    result.TypeMsgError = errorMsg.Type;
                    result.MsgError     = errorMsg.Msg;
                }
                else
                {
                    string Hash_Pass = BaoMat.GetMD5(BaoMat.GetSimpleMD5(data.NewPass), context.TaiKhoans.Where(x => x.Id == resetPassWord.Id_TaiKhoan && !x.DelFlag).FirstOrDefault().salt_Pass);
                    //cập nhật mật khẩu
                    context.TaiKhoans.Where(x => x.Id == resetPassWord.Id_TaiKhoan && !x.DelFlag).Update(y => new TblTaiKhoan
                    {
                        hash_Pass = Hash_Pass
                    });
                    context.ResetPassWords.Where(x => x.TokenReset == Token).Delete();
                    context.ResetPassWords.Where(x => x.ThoiGianHetHan < DateTime.Now).Delete();
                    context.SaveChanges();
                    var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.ThayDoiMatKhauThanhCong);
                    result.TypeMsgError = errorMsg.Type;
                    result.MsgError     = errorMsg.Msg;
                    return(result);
                }
                return(result);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
コード例 #9
0
        /// <summary>
        /// Update thông tin cá nhân
        /// Author       :   HoangNM - 29/03/2019 - create
        /// </summary>
        /// <param name="account">
        /// thông tin mà người dùng muốn thay đổi
        /// </param>
        /// <returns>
        /// Thông báo
        /// </returns>

        public ResponseInfo UpdateAccount(UpdateAccount account)
        {
            DbContextTransaction transaction = context.Database.BeginTransaction();
            ResponseInfo         response    = new ResponseInfo();

            try
            {
                string token = HttpContext.Current.Request.Cookies["ToKen"].Value.Replace("%3d", "=");
                token = BaoMat.Base64Decode(token);
                TblToken TblToken = context.Tokens.FirstOrDefault(x => x.TokenTaiKhoan == token);

                if (account.New_Passord != "" && string.Compare(account.New_Passord, account.Confirm_Password) == 0)
                {
                    string Hash_Pass = BaoMat.GetMD5(BaoMat.GetSimpleMD5(account.New_Passord), context.TaiKhoans.Where(x => x.Id == TblToken.TaiKhoan.Id && !x.DelFlag).FirstOrDefault().salt_Pass);
                    //cập nhật mật khẩu
                    context.TaiKhoans.Where(x => x.Id == TblToken.TaiKhoan.Id && !x.DelFlag).Update(y => new TblTaiKhoan
                    {
                        hash_Pass = Hash_Pass
                    });
                }


                context.ThongTinNguoiDungs.Where(x => x.Id == TblToken.TaiKhoan.ThongTinNguoiDung.Id && !x.DelFlag).Update(x => new TblUser
                {
                    Ten      = account.Ten,
                    NgaySinh = account.NgaySinh,
                    GioiTinh = account.GioiTinh
                });
                context.SaveChanges();
                response.IsSuccess = true;
                transaction.Commit();

                var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.CapNhatThongTinThanhCong);
                response.TypeMsgError = errorMsg.Type;
                response.MsgError     = errorMsg.Msg;
            }
            catch (Exception e)
            {
                response.IsSuccess = false;
                transaction.Rollback();
                throw e;
            }

            return(response);
        }
コード例 #10
0
 /// <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;
     }
 }
コード例 #11
0
ファイル: LoginModel.cs プロジェクト: hungud/truyenda-backend
        /// <summary>
        /// Xóa token login của user khi user logout
        /// Author       :   HoangNM - 03/03/2019 - create
        /// </summary>
        /// <returns>true nếu xóa thành công</returns>
        public ResponseInfo RemoveToken(string token)
        {
            ResponseInfo result = new ResponseInfo();

            try
            {
                token = BaoMat.Base64Decode(token);
                context.Tokens.Where(x => x.TokenTaiKhoan == token).Delete();
                context.Tokens.Where(x => x.ThoiGianHetHan < DateTime.Now).Delete();


                var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.DangXuatThanhCong);
                result.TypeMsgError = errorMsg.Type;
                result.MsgError     = errorMsg.Msg;

                return(result);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
コード例 #12
0
        /// <summary>
        /// Kích hoạt tài khoản theo link đã gửi trong mail.
        /// Author       :   QuyPN - 20/05/2018 - create
        /// </summary>
        /// <param name="token">Token đang mã hóa Base64 được gửi đi trong mail</param>
        /// <param name="username">Tên đăng nhập mà user đăng ký được gửi kèm trong mail</param>
        /// <returns>Thông tin của việc kích hoạt tài khoản</returns>
        public ResponseInfo ActiveAccount(string token, string username)
        {
            DbContextTransaction transaction = context.Database.BeginTransaction();

            try
            {
                ResponseInfo result = new ResponseInfo();
                token = BaoMat.Base64Decode(token);
                TblAccount account = context.Account.FirstOrDefault(x => x.Username == username && x.TokenActive == token && !x.DelFlag);
                if (account == null)
                {
                    result.Code = 202;
                }
                else
                {
                    if (account.TimeOfToken.Value < DateTime.Now)
                    {
                        result.Code = 203;
                    }
                    else
                    {
                        account.IsActived     = true;
                        account.IsActiveEmail = true;
                        account.TokenActive   = "";
                        account.TimeOfToken   = null;
                        context.SaveChanges();
                    }
                }
                transaction.Commit();
                return(result);
            }
            catch (Exception e)
            {
                transaction.Rollback();
                throw e;
            }
        }
コード例 #13
0
        /// <summary>
        /// Tạo tài khoản cho người dùng dựa vào thông tin đã cung cấp.
        /// Author       :   HoangNM - 28/02/2019 - 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();
                // Kiểm tra xem username đã tồn tại hay chưa
                TblTaiKhoan taiKhoan = context.TaiKhoans.FirstOrDefault(x => x.Username == newAccount.Username && !x.DelFlag);
                if (taiKhoan == null)
                {
                    // Kiểm tra xem email đã tồn tại hay chưa
                    taiKhoan = context.TaiKhoans.FirstOrDefault(x => x.Email == newAccount.Email && !x.DelFlag);
                    if (taiKhoan == null)
                    {
                        // Tạo user mới
                        TblThongTinNguoiDung user = new TblThongTinNguoiDung
                        {
                            Ten      = newAccount.Ten,
                            GioiTinh = newAccount.GioiTinh,
                            NgaySinh = newAccount.NgaySinh,
                        };
                        context.ThongTinNguoiDungs.Add(user);
                        context.SaveChanges();



                        string salt = BaoMat.GetSalt();

                        //// Tạo tài khoản đăng nhập cho user
                        taiKhoan = new TblTaiKhoan
                        {
                            Id_User      = user.Id,
                            Username     = newAccount.Username,
                            salt_Pass    = salt,
                            hash_Pass    = BaoMat.GetMD5(BaoMat.GetSimpleMD5(newAccount.Password), salt),
                            Email        = newAccount.Email,
                            Id_TrangThai = 1,
                            Id_NhomDich  = 1,
                            Id_Face      = "",
                            Id_Google    = "",
                            Id_PhanQuyen = 5
                        };



                        context.TaiKhoans.Add(taiKhoan);
                        // Lưu vào CSDL
                        context.SaveChanges();



                        result.Code      = 200;
                        result.IsSuccess = true;
                        result.IsValid   = true;

                        var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.TaoTaiKhoanThanhCong);
                        result.TypeMsgError = errorMsg.Type;
                        result.MsgError     = errorMsg.Msg;
                    }
                    else
                    {
                        result.Code = 400;
                        var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.EmailDaTonTai);
                        result.TypeMsgError = errorMsg.Type;
                        result.MsgError     = errorMsg.Msg;
                    }
                }
                else
                {
                    result.Code = 400;
                    var errorMsg = new GetErrorMsg().GetMsg((int)MessageEnum.MsgNO.UserNameDaDung);
                    result.TypeMsgError = errorMsg.Type;
                    result.MsgError     = errorMsg.Msg;
                }
                //transaction.Commit();
                return(result);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
コード例 #14
0
 /// <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;
     }
 }
コード例 #15
0
ファイル: LoginModel.cs プロジェクト: hungud/truyenda-backend
        /// <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;
            }
        }
コード例 #16
0
        /// <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;
            }
        }