Quick links: Content - sections - sub sections
EN FR

The app:init-admin command

The app:init-admin command adds an administration web interface to your application. It enables master_admin jelix module, and can automatically configure authentication (jAuth) and rights accesses (jAcl2).

Warning: for security reasons, and to ease the use of the framework, it is highly recommended to create a dedicated application for an administration web interface.

To create this administration interface, first, you have to configure jDb. Then you can run in your application:


   php dev.php app:init-admin index

index is the name of the entry point (without the extension .php) dedicated to the admin interface.

If you really want to create this interface in an existing application already using index.php for other modules, you can indicate an other name, such as "admin".

The command will create the entry point if it doesn't already exist. The configuration of the entry point will be modified in order to have a fully functional web interface. For example, you have two new response objects into your app/responses/ directory. So you can customize later the general interface of the administration.

Note that before running this command, you have to configure the database access in profiles.ini.php, because it will create all needed tables for jAuth and jAcl2. If you prefer to configure jAuth and/or jAcl2 by yourself (or to use other modules implementing authentication or acl management), you can indicate options to the command : --no-jauth, --no-jauthdb, --no-jauthdb-admin and/or --no-acl2db.

After having created the admin interface (and configuring jAuth and jAcl2 correctly if you used --noauthdb and/or --noacl2db), you can run the application (http://example.com/admin.php for example).

You will see a login form, displayed by the module jauth. By default, a user named "admin" with the password "admin" is created. After entering login and password, you will be redirected to the [[/ref-modules/master_admin|master_admin module]].

**Remember that you cannot use controllers of a module on two entry points at the same time.**. So if you already use controllers and zones of jauth in your application, for anything other than the admin interface, you'll have issues with urls and some "bizarre" behaviors, such as the login form of the admin which is submitted on the other entry point of your application, instead of the entry point of the administration. If you need to use jauth both for an admin and a public web site, you need to create two dedicated applications (they can share both modules code and databases of course).

User interface and urls

Administration modules should be accessible only through the entry point dedicated to the administration. So you must declare these modules in the right <entrypoint> element into the app/system/urls.xml.


 <entrypoint name="admin">
     <url pathinfo="/" module="master_admin" action="default:index" />
     <url module="jauth"/>
     <url module="jauthdb_admin"/>
     <url module="jacl2db_admin"/>
     <!-- etc... -->
 </entrypoint>

Without this declaration, modules will not be accessible, because urls to them are unknown. Or it could be accessible through an other entry point, which will cause issues.

The exemple above allow to declare some basic url (/module/controller/action) quickly, but you may want to have "cool" urls. Each provided administration module have their own URL definition file, so you can refer to them.

For example, the administration use the auth system of jelix, jAuth. You can then define urls for the jauth module, by including the urls.xml file provided with the jauth module.


 <entrypoint name="admin">
     <url pathinfo="/" module="master_admin" action="default:index" />

     <url pathinfo="/login/" module="jauth" include="urls.xml" />

 </entrypoint>

When you executed app:init-admin, if you didn't deactivated authentication with jAuthDb and/or rights management with jAcl2Db, you have then to defines urls for the jauthdb_admin module and/or jacl2db_admin. Include their urls.xml files:


 <entrypoint name="admin">
     <url pathinfo="" module="master_admin" action="default:index" />

     <url pathinfo="/login/" module="jauth" include="urls.xml" />
     <url pathinfo="/acl/" module="jacl2db_admin"  include="urls.xml"/>
     <url pathinfo="/auth/" module="jauthdb_admin"  include="urls.xml"/>

 </entrypoint>

Your administration interface is now ready.