ATK4 What is the procedure for setting up an Admin Area?

后端 未结 1 533
[愿得一人]
[愿得一人] 2021-01-15 11:24

I have setup a CRUD area on my frontendAPI.php file (testing my models)... and I even managed to secure it. I would like to do this the proper way... I would like to establi

相关标签:
1条回答
  • 2021-01-15 11:33

    Still new at this but I'm trying to do the same for a news page, think i've got the login part working but having problems with the CRUD (will post a question on it shortly) - i have a table to populate with data from an rss feed (but will be manually populated with a CRUD to start with) and then have a page on the front end to pull out the details using views to format each news story.

    1. Create a new directory called /page/Admin
    2. Create a new file here based on the function e.g. news.php containing

      class page_admin_news extends Page {
      function init(){
          parent::init();
          $p=$this;
      
          $crud=$p->add('CRUD');
      
          $g=$crud->setModel('News');
          if($crud->grid)
                 $crud->grid->addPaginator(30);
          }
      }
      
    3. In Frontend.php, you need to enable the login - for an admin only access, the BasicAuth may be sufficient but there are also classes to use a database to obtain username and password infromation e.g. for a membership site - heres the basic one. // If you wish to restrict access to your pages, use BasicAuth class $auth=$this->add('BasicAuth') ->allow('demo','demo') ;

    4. You need to modify Frontend.php to enable pages that can be viewed without being logged in

      $auth->allowPage('index');
      $auth->allowPage('news');
      $auth->allowPage('links');
      $auth->allowPage('About');
      if (!$auth->isPageAllowed($this->api->page))
      {
         $auth->check();
      }
      
    5. And also in Frontend.php, you need to create a different menu if logged in. Note the login and logout pages dont actually exist.

      if ($auth->isLoggedIn())
      {
        $this->add('Menu',null,'Menu')
          ->addMenuitem('News','admin_news')
          ->addMenuitem('logout')
        ;
      } else {
        $this->add('Menu',null,'Menu')
          ->addMenuitem('News','news')
          ->addMenuitem('Links','links')
          ->addMenuItem('About')
          ->addMenuItem('Login')
          ;
      }
      
    6. When you login, it goes to page/index.php by default so if you want it to redirect to a particular page when you log in so you can add this to page/index.php

      class page_index extends Page {
      function init(){
        parent::init();
        $p=$this;
      
        if($this->api->auth->isLoggedIn())
          $this->api->redirect('admin_news');
      

    Hope that helps.

    Trev

    0 讨论(0)
提交回复
热议问题