Skip to content

kor3k/silex-users

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#Silex Users App


Popis

  • registruje a spravuje uživatele v databázi.
  • registrovaní uživatelé se mohou přihlašovat do aplikace.
  • některé routy / controllery vyžadují přihlášeného uživatele, jiné ne.
  • je možné i nadefinovat uživatele v configu
  • pro model data používá ORM + MySQL
  • pro views Twig
  • pro zabezpečení Symfony\Security component
  • pro uchování uživatelského kontextu Symfony\Session
  • Symfony\Translation pro překlady prvků aplikace, zvolený jazyk ukládá do Session
    • což porušuje bezestavovost http protokolu a REST principy (jedna url vrací různá data na základě kontextu). správná implementace by měla brát v potaz Accept-Language request header a/nebo _locale query parameter
  • silex security provider
  • pro html/css layout unsemantic, pro html/css ui bootstrap

Instalace

  1. download silex-users
  1. download composer

     php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"
    
  2. update

  3. vytvořit složky /cache a /logs

  4. vytvořit schéma v databázi

    • dle /Resources/sql/users.sql
    • v MySQL Workbench - Open /Resources/sql/users.mwb , Database -> Synchronize Model
  5. upravit nastavení ve front controlleru /web/index.php - připojení k db, mailer user atd

  6. http://localhost/silex-users/web/index.php/index


Použití

Po přihlášení uživatele je ten dostupný přes Application::user, tedy $app->user() v php a {{ app.user }} v Twigu. Pozor ovšem, hodnota metody může být:

  • null (na routě mimo firewall)
  • string 'anon.' (na routě za firewallem autorizované anonymně)
  • Symfony\Component\Security\Core\User\UserInterface (na routě za fw autorizované plně)

Takže je lepší před přístupem kontrolovat roli IS_AUTHENTICATED_FULLY nebo ROLE_USER pomocí Application::isGranted:

    if( $app->isGranted( 'ROLE_USER' ) )
    {
 	  echo $app->user()->getUsername();
    }  
    else
    {
 	  echo 'anonymous';
    }

a v Twigu:

   {% if is_granted( 'ROLE_USER' ) %}
       {{ app.user.username }}    
   {% else %} 
       anonymous
   {% endif %}   
  • metoda Application::isGranted vrací true | false pokud uživatel má nebo nemá danou roli.

  • pokud ji zavoláme s druhým argumentem true, tak v případě, že uživatel roli nemá, nevrací false, nýbrž vyhodí AccessDeniedException:

      $app->isGranted( 'ROLE_USER' , true );
    

Update

  1. update dependencies

     php composer.phar self-update && php composer.phar update --optimize-autoloader
    

Hints

  • cesta k php musí být v systémové Path proměnné:

    • Control Panels -> System -> Advanced system settings -> Environment Variables -> System Variables -> Path -> Edit,
    • přidat k současné hodnotě ;c:\wamp\bin\php\php5.5\
  • příkazy se spouští v git bashi


Links


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published