internal void LogoutUser() { logger.Debug("Recived log out request"); try { CurrentUser currentUser = (CurrentUser)HttpContext.Current.User; if (String.IsNullOrEmpty(currentUser.token)) { logger.Error("token is empty for user"); throw new CustomException("token is empty for user", (int)ErrorCode.UNAUTHORIZED); } using (var ctx = new PetWhizzEntities()) { userToken currentToken = ctx.userTokens.Where(a => a.token.Equals(currentUser.token)).FirstOrDefault(); if (currentToken == null) { logger.Error("token is not found on DB"); throw new CustomException("token is not found on DB", (int)ErrorCode.UNAUTHORIZED); } ctx.userTokens.Attach(currentToken); currentToken.expiryTime = null; ctx.SaveChanges(); logger.Debug("successfully logout user - " + currentUser.username); } } catch (CustomException) { throw; } catch (Exception ex) { logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException); throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR); throw; } }
public async Task <ResponseEntity> ThongTinTaiKhoan() { var accessToken = Request.Headers[HeaderNames.Authorization]; userToken tttk = commonService.getUserByToken(accessToken).Result; if (tttk == null) { return(new ResponseEntity(StatusCodeConstants.AUTHORIZATION, "Token đã hết hạn bạn hãy đăng nhập lại!", MessageConstant.MESSAGE_ERROR_401)); } NguoiDung tt = db.NguoiDung.SingleOrDefault(n => n.TaiKhoan == tttk.taiKhoan); if (tt == null) { // I wish to return an error response how can i do that? //var response = await tbl.TBLoi(ThongBaoLoi.Loi400, "Tài khoản không hợp lệ!"); //return response; return(new ResponseEntity(StatusCodeConstants.BAD_REQUEST, "Tài khoản không hợp lệ!", MessageConstant.BAD_REQUEST)); } IEnumerable <DatVe> lstDatVe = db.DatVe.Where(n => n.TaiKhoanNguoiDung == tttk.taiKhoan).ToList(); List <ThongTinDatVe> lstThongTinDatVe = new List <ThongTinDatVe>(); if (lstDatVe.Count() != 0) { foreach (var item in lstDatVe.GroupBy(n => n.MaLichChieu)) { ThongTinDatVe ttdv = new ThongTinDatVe(); ttdv.MaVe = item.First().MaVe; foreach (var ghe in item) { Ghe gheNavigation = ghe.MaGheNavigation; Rap rap = ghe.MaGheNavigation.MaRapNavigation; CumRap cumRap = rap.MaCumRapNavigation; HeThongRap heThongRap = cumRap.MaHeThongRapNavigation; ThongTinGhe ttg = new ThongTinGhe() { MaCumRap = rap.TenRap, TenCumRap = rap.TenRap, MaGhe = ghe.MaGhe, TenGhe = gheNavigation.TenGhe, MaRap = gheNavigation.MaRap, TenRap = rap.TenRap, MaHeThongRap = heThongRap.MaHeThongRap, TenHeThongRap = cumRap.TenCumRap }; ttdv.DanhSachGhe.Add(ttg); } ttdv.NgayDat = item.First().NgayDat.Value; ttdv.HinhAnh = DomainImage + item.First().MaLichChieuNavigation.MaPhimNavigation.HinhAnh; ttdv.TenPhim = item.First().MaLichChieuNavigation.MaPhimNavigation.TenPhim; ttdv.GiaVe = item.First().GiaVe.Value; ttdv.ThoiLuongPhim = item.First().MaLichChieuNavigation.ThoiLuong.Value; lstThongTinDatVe.Add(ttdv); } } ThongTinTaiKhoanVM ttTK = Mapper.Map <NguoiDung, ThongTinTaiKhoanVM>(tt); ttTK.ThongTinDatVe = lstThongTinDatVe; return(new ResponseEntity(StatusCodeConstants.OK, ttTK, MessageConstant.MESSAGE_SUCCESS_200)); //return Ok(ttTK); }
internal RefreshTokenResponse RefreshToken(RefreshTokenRequest refreshTokenRequest) { logger.Debug("Recived RefreshToken request"); RefreshTokenResponse RefreshTokenResponse; try { if (String.IsNullOrEmpty(refreshTokenRequest.token)) { logger.Error("Refresh token validation failed"); throw new CustomException("Refresh token validation failed.Token is null", (int)ErrorCode.VALIDATIONFAILED); } refreshTokenRequest.token = Decryptor.Decrypt(refreshTokenRequest.token).Split('|')[1]; String NewToken = Guid.NewGuid().ToString(); using (var ctx = new PetWhizzEntities()) { userToken UserToken = ctx.userTokens.Where(a => a.token == refreshTokenRequest.token && a.tokenType == "AUTHTOKEN").FirstOrDefault(); if (UserToken == null) { logger.Error("token is invalid"); throw new CustomException(" token is invalid", (int)ErrorCode.UNAUTHORIZED); } //update existing token ctx.userTokens.Attach(UserToken); UserToken.generatedTime = DateTime.Now; UserToken.token = NewToken; UserToken.expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime); ctx.SaveChanges(); RefreshTokenResponse = new RefreshTokenResponse() { token = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + NewToken), }; } } catch (CustomException) { throw; } catch (Exception ex) { logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException); throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR); } return(RefreshTokenResponse); }
public async Task <ResponseEntity> DatVe(DanhSachVeDat DanhSachVe) { var accessToken = Request.Headers[HeaderNames.Authorization]; userToken usToken = commonService.getUserByToken(accessToken).Result; if (usToken == null) { return(new ResponseEntity(StatusCodeConstants.AUTHORIZATION, "Token đã hết hạn bạn hãy đăng nhập lại!", MessageConstant.MESSAGE_ERROR_401)); } var nd = db.NguoiDung.Where(n => n.TaiKhoan == usToken.taiKhoan); if (nd.Count() == 0) { return(new ResponseEntity(StatusCodeConstants.ERROR_SERVER, "Tài khoản người dùng không tồn tại!", MessageConstant.MESSAGE_ERROR_500)); //return await tbl.TBLoi(ThongBaoLoi.Loi500, "Tài khoản người dùng không tồn tại!"); } if (DanhSachVe == null) { return(new ResponseEntity(StatusCodeConstants.ERROR_SERVER, "Danh sách vé rỗng!", MessageConstant.MESSAGE_ERROR_500)); //return Ok("Danh sách vé rỗng!"); } foreach (var ve in DanhSachVe.DanhSachVe) { DatVe dv = new DatVe(); dv.NgayDat = DateTime.Now; dv.MaGhe = ve.MaGhe; dv.GiaVe = ve.GiaVe; dv.TaiKhoanNguoiDung = usToken.taiKhoan; dv.MaLichChieu = DanhSachVe.MaLichChieu; db.DatVe.Add(dv); } db.SaveChanges(); return(new ResponseEntity(StatusCodeConstants.OK, "Đặt vé thành công!", MessageConstant.MESSAGE_SUCCESS_200)); //return Ok("Đặt vé thành công!"); }
public async Task <userToken> getUserByToken(string tokenString) { try { //tokenString = tokenString.Replace("Bearer ", "").Trim(); dbRapChieuPhimContext db = new dbRapChieuPhimContext(); string taiKhoan = parseJWTToEmail(tokenString); userToken nguoiDung = db.NguoiDung.Where(n => n.TaiKhoan == taiKhoan).Select(n => new userToken { taiKhoan = n.TaiKhoan, email = n.Email, maLoaiNguoiDung = n.MaLoaiNguoiDung, maNhom = n.MaNhom }).FirstOrDefault(); if (nguoiDung != null) { return(nguoiDung); } return(null); } catch (Exception ex) { return(null); } }
internal UserLoginResponse UserLogin(UserLoginRequest userLoginRequest) { logger.Debug("Recived user login request"); UserLoginResponse UserLoginResponse; try { String GeneratedToken = Guid.NewGuid().ToString(); userLoginRequest.deviceId = Decryptor.Decrypt(userLoginRequest.deviceId).Split('|')[1]; userLoginRequest.username = Decryptor.Decrypt(userLoginRequest.username).Split('|')[1]; userLoginRequest.password = Decryptor.Decrypt(userLoginRequest.password).Split('|')[1]; logger.Debug("Recived user login request with username - " + userLoginRequest.username + " password - " + userLoginRequest.password + " deviceId - " + userLoginRequest.deviceId); if (!String.IsNullOrEmpty(userLoginRequest.deviceId) && !String.IsNullOrEmpty(userLoginRequest.username) && !String.IsNullOrEmpty(userLoginRequest.password)) { using (var ctx = new PetWhizzEntities()) { //checking for user user User = ctx.users.Where(a => a.userName.ToLower().Equals(userLoginRequest.username.ToLower()) && a.password == userLoginRequest.password).FirstOrDefault(); if (User == null) { logger.Error("Login failed for user - " + userLoginRequest.username); throw new CustomException("Username or Password Invalid", (int)ErrorCode.LOGINFAILURE); } UserLoginResponse = new UserLoginResponse() { email = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.eMail), status = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.status), token = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + GeneratedToken), username = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.userName), userId = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + User.id.ToString()) }; //checking for device userDevice UserDevice = ctx.userDevices.Where(a => a.userId == User.id && a.deviceId == userLoginRequest.deviceId).FirstOrDefault(); if (UserDevice == null) { //new device var userDevice = new userDevice() { deviceId = userLoginRequest.deviceId, deviceName = "", userId = User.id, }; ctx.userDevices.Add(userDevice); ctx.SaveChanges(); //saving user token var userToken = new userToken() { tokenType = "AUTHTOKEN", useCount = 0, generatedTime = DateTime.Now, userDeviceId = userDevice.id, expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime), token = GeneratedToken, }; ctx.userTokens.Add(userToken); ctx.SaveChanges(); } else { userToken userDBToken = ctx.userTokens.Where(a => a.userDeviceId == UserDevice.id).FirstOrDefault(); if (userDBToken == null) { var userToken = new userToken() { tokenType = "AUTHTOKEN", useCount = 0, generatedTime = DateTime.Now, userDeviceId = UserDevice.id, expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime), token = GeneratedToken, }; ctx.userTokens.Add(userToken); ctx.SaveChanges(); } else { ctx.userTokens.Attach(userDBToken); userDBToken.expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime); ctx.SaveChanges(); UserLoginResponse.token = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + userDBToken.token); } } } } else { logger.Error("Some of the properties in userLoginRequest is null or empty"); throw new CustomException("All propreties should contains a value", (int)ErrorCode.VALIDATIONFAILED); } } catch (CustomException) { throw; } catch (Exception ex) { logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException); throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR); } return(UserLoginResponse); }
internal EnrollUserResponse EnrollUser(EnrollUserRequest EnrollUserRequest) { logger.Debug("Recived enroll user request"); EnrollUserResponse EnrollUserResponse; try { ValidateUserRequest ValidateUserRequest = new ValidateUserRequest() { email = EnrollUserRequest.email, username = EnrollUserRequest.username }; ValidatUser(ValidateUserRequest); EnrollUserRequest.username = Decryptor.Decrypt(EnrollUserRequest.username).Split('|')[1]; EnrollUserRequest.password = Decryptor.Decrypt(EnrollUserRequest.password).Split('|')[1]; EnrollUserRequest.email = Decryptor.Decrypt(EnrollUserRequest.email).Split('|')[1]; EnrollUserRequest.deviceId = Decryptor.Decrypt(EnrollUserRequest.deviceId).Split('|')[1]; String GeneratedToken = Guid.NewGuid().ToString(); int GeneratedCode = new Random().Next(100000, 999999); logger.Debug("Decrypted enroll user request details userName - " + EnrollUserRequest.username + " password - " + EnrollUserRequest.password + " email - " + EnrollUserRequest.email + " deviceId - " + EnrollUserRequest.deviceId); //validating details if (!String.IsNullOrEmpty(EnrollUserRequest.username) && !String.IsNullOrEmpty(EnrollUserRequest.password) && !String.IsNullOrEmpty(EnrollUserRequest.email) && !String.IsNullOrEmpty(EnrollUserRequest.deviceId)) { //setting up user details var user = new user() { createdDate = DateTime.Now, lastUpdatedDate = DateTime.Now, userName = EnrollUserRequest.username, password = EnrollUserRequest.password, eMail = EnrollUserRequest.email, status = "EMAILVERIFY" }; using (var ctx = new PetWhizzEntities()) { //saving user ctx.users.Add(user); ctx.SaveChanges(); //saving user device var userDevice = new userDevice() { deviceId = EnrollUserRequest.deviceId, // deviceName = EnrollUserRequest.deviceName, userId = user.id, }; ctx.userDevices.Add(userDevice); ctx.SaveChanges(); //saving user token var userToken = new userToken() { tokenType = "AUTHTOKEN", useCount = 0, generatedTime = DateTime.Now, userDeviceId = userDevice.id, expiryTime = DateTime.Now.AddSeconds(TokenExpiryTime), token = GeneratedToken, }; ctx.userTokens.Add(userToken); ctx.SaveChanges(); //user verification data var userVerificationInfo = new userVerification() { code = GeneratedCode.ToString(), generatedTime = DateTime.Now, expiryTime = DateTime.Now.AddSeconds(VerificationCodeExpiryTime), isValid = true, userId = user.id, verificationType = "EMAILVERIFY", }; ctx.userVerifications.Add(userVerificationInfo); ctx.SaveChanges(); } SendEmailVerification(user.eMail, user.userName, user.id, GeneratedCode.ToString()); EnrollUserResponse = new EnrollUserResponse() { token = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + GeneratedToken), username = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.userName), email = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.eMail), status = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.status), userId = Encryptor.Encrypt(DateTime.Now.ToString("M/d/yyyy h:mm:ss tt") + "|" + user.id) }; } else { logger.Error("Some of the properties in EnrollUserRequest is null or empty"); throw new CustomException("All propreties should contains a value", (int)ErrorCode.VALIDATIONFAILED); } } catch (CustomException) { throw; } catch (Exception ex) { logger.Error(MethodBase.GetCurrentMethod().Name + ": exception: " + ex.Message + ", " + ex.InnerException); throw new CustomException("SystemError", ex, (int)ErrorCode.PROCEESINGERROR); } return(EnrollUserResponse); }