DotKernel web starter package suitable for admin applications.
DotKernel can be installed through a single command that utilizes Composer. Because of that, Composer is required to install DotKernel admin
.
Installation instructions:
If you have never used composer before make sure you read the
Composer Basic Usage
section in Composer's documentation
Example:
- absolute path
/var/www/dk-admin
- or relative path
dk-admin
(equivalent with./dk-admin
)
After choosing the path for DotKernel (dk-admin
will be used for the remainder of this example) it must be installed. There are two installation methods.
The advantage of using this command is that it runs through the whole installation process. Run the following command:
composer create-project dotkernel/admin -s dev dk
The above command downloads the admin
package, then downloads and installs the dependencies
.
The setup script prompts for some configuration settings, for example the lines below:
Please select which config file you wish to inject 'Laminas\Diactoros\ConfigProvider' into:
[0] Do not inject
[1] config/config.php
Make your selection (default is 0):
Simply select [0] Do not inject
, because DotKernel includes its own configProvider which already contains the prompted configurations.
If you choose [1] config/config.php
Laminas's ConfigProvider
from session
will be injected.
The next question is:
Remember this option for other packages of the same type? (y/N)
Type y
here, and hit enter
This method requires more manual input, but it ensures that the default branch is installed, even if it is not released. Run the following command:
git clone https://github.com/dotkernel/admin.git .
The dependencies have to be installed separately, by running this command
composer install
Just like for II Installing DotKernel admin using composer
(see above), the setup asks for configuration settings regarding injections (type 0
and hit enter
) and a confirmation to use this setting for other packages (type y
and hit enter
)
- Remove the
.dist
extension from the filesconfig/autoload/local.php.dist
- Edit
config/autoload/local.php
according to your dev machine and fill in thedatabase
configuration
Run the migrations and seeds with these commands:
php bin/doctrine-migrations migrate
php bin/doctrine fixtures:execute
- If you use
composer create-project
, the project will go into development mode automatically after installing. The development mode status can be checked and toggled by using these composer commands:
composer development-status
composer development-enable
composer development-disable
- If not already done on installation, remove the
.dist
extension fromconfig/autoload/development.global.php.dist
. This will enable dev mode by turning debug flag totrue
and turning configuration caching tooff
. It will also make sure that any existing config cache is cleared.
Charset recommendation: utf8mb4_general_ci
You can download/update a specific GeoLite2 database, by running the following command:
php bin/cli.php geoip:synchronize -d {DATABASE}
Where {DATABASE} takes one of the following values: asn
, city
, country
.
You can download/update all GeoLite2 databases at once, by running the following command:
php bin/cli.php geoip:synchronize
The output should be similar to the below, displaying per row: database identifier
: previous build datetime
-> current build datetime
.
asn: n/a -> 2021-07-01 02:09:34
city: n/a -> 2021-07-01 02:09:20
country: n/a -> 2021-07-01 02:05:12
Get help for this command by running:
php bin/cli.php help geoip:synchronize
Tip: If you setup the synchronizer command as a cronjob, you can add the -q|--quiet
option, and it will output data only if an error has occurred.
To install dependencies into the node_modules
directory run this command.
npm install
If npm install
fails, this could be caused by user permissions of npm. Recommendation is to install npm through Node Version Manager
.
The watch command compiles the components then watches the files and recompiles when one of them changes.
npm run watch
After all updates are done, this command compiles the assets locally, minifies them and makes them ready for production.
npm run prod
The packages responsible for restricting access to certain parts of the application are dot-rbac-guard and dot-rbac. These packages work together to create an infrastructure that is customizable and diversified to manage user access to the platform by specifying the type of role the user has.
The authorization.global.php
file provides multiple configurations specifying multiple roles as well as the types of permissions to which these roles have access.
//example of a flat RBAC model that specifies two types of roles as well as their permission
'roles' => [
'superuser' => [
'permissions' => [
'authenticated',
'edit',
'delete',
//etc..
]
],
'admin' => [
'permissions' => [
'authenticated',
//etc..
]
]
]
The authorization-guards.global.php
file provides configuration to restrict access to certain actions based on the permissions defined in authorization.global.php
so basically we have to add the permissions in the dot-rbac configuration file first to specify the action restriction permissions.
//example of configuration example to restrict certain actions of some routes based on the permissions specified in the dot-rbac configuration file
'rules' => [
[
'route' => 'account',
'actions' => [//list of actions to apply , or empty array for all actions
'unregister',
'avatar',
'details',
'changePassword'
],
'permissions' => ['authenticated']
],
[
'route' => 'admin',
'actions' => [
'deleteAccount'
],
'permissions' => [
'delete'
//list of roles to allow
]
]
]
Note: Do not enable dev mode in production
- Run the following command in your project's directory to start PHPs built-in server:
php -S 0.0.0.0:8080 -t public
Running command
composer serve
will do the exact same, but the above is faster.
0.0.0.0
means that the server is open to all incoming connections
127.0.0.1
means that the server can only be accessed locally (localhost only)
8080
the port on which the server is started (the listening port for the server)
NOTE: If you are still getting exceptions or errors regarding some missing services, try running the following command
php bin/clear-config-cache.php
If
config-cache.php
is present that config will be loaded regardless of theConfigAggregator::ENABLE_CACHE
inconfig/autoload/mezzio.global.php
- Open a web browser and visit
http://localhost:8080/
You should see the DotKernel admin
login page.
If you ran the migrations you will have an admin user in the database with the following credentials:
- User:
admin
- Password:
dotadmin
NOTE:
- Production only: Make sure you modify the default admin credentials.
- Development only:
session.cookie_secure
does not work locally so make sure you modify yourlocal.php
, as per the following:
# other code
return [
# other configurations...
'session_config' => [
'cookie_secure' => false,
],
];
Do not change this in local.php.dist
as well because this value should remain true
on production.