https://github.com/darkalchemy/slim-auth
A Slim 4 Skeleton.
https://github.com/darkalchemy/slim-auth
csrf i18n illuminate-database jobby phinx-migrations php php-di phpmailer psr-7 sentinel slim slim-flash slim-skeletons slim4 twig valitron webpack
Last synced: 5 months ago
JSON representation
A Slim 4 Skeleton.
- Host: GitHub
- URL: https://github.com/darkalchemy/slim-auth
- Owner: darkalchemy
- License: mit
- Archived: true
- Created: 2020-02-11T22:13:31.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-14T21:19:41.000Z (about 3 years ago)
- Last Synced: 2025-02-17T12:38:02.975Z (over 1 year ago)
- Topics: csrf, i18n, illuminate-database, jobby, phinx-migrations, php, php-di, phpmailer, psr-7, sentinel, slim, slim-flash, slim-skeletons, slim4, twig, valitron, webpack
- Language: PHP
- Homepage:
- Size: 2.5 MB
- Stars: 30
- Watchers: 1
- Forks: 3
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Slim-Auth
A Slim 4 Skeleton.

[](https://www.codacy.com/gh/darkalchemy/Slim-Auth/dashboard?utm_source=github.com&utm_medium=referral&utm_content=darkalchemy/Slim-Auth&utm_campaign=Badge_Grade)
[](https://github.com/darkalchemy/Slim-Auth/issues)
[](https://github.com/darkalchemy/Slim-Auth/blob/master/LICENSE)
[](https://packagist.org/packages/darlachemy/slim-auth)
This is a simple skeleton to quickly ramp up a slim 4 project.
PHP 8 is required\
Composer is required\
npm/npx is required
[Slim 4](https://github.com/slimphp/Slim) as the core framework\
[nyholm/psr7](https://github.com/Nyholm/psr7) for the PSR-7 implementation\
[php-di/php-di](http://php-di.org/) to manage dependency injection\
[Cartalyst/Sentinel](https://cartalyst.com/manual/sentinel/3.) for user authentication and authorization\
[delight-im/PHP-I18N](https://github.com/delight-im/PHP-I18N) for handling the users locale\
[hellogerard/jobby](https://github.com/jobbyphp/jobby) to run all background jobs through cron\
[Eloquent/ORM](https://github.com/illuminate/database) for database storage\
[EmailValidator](https://github.com/egulias/EmailValidator/tree/master) for validating email addresses\
[Middlewares/Trailing-slash](https://github.com/middlewares/trailing-slash) to remove any trailing slashes in the url\
[Monolog](https://github.com/Seldaek/monolog) for logging\
[PHPMailer](https://github.com/PHPMailer/PHPMailer) for sending email\
[Phinx](https://phinx.org/) for database migrations\
[Odan/Session](https://github.com/odan/session) for managing the session\
[Slim/CSRF](https://github.com/slimphp/Slim-Csrf) to protect against csrf\
[Slim/Flash](https://github.com/slimphp/Slim-Flash) for flash messaging\
[Slim/Twig/Flash](https://github.com/kanellov/slim-twig-flash) (updated and included manually) for displaying flash messages in twig\
[Slim/Twig-View](https://github.com/slimphp/Twig-View) for templates\
[Slim/Whoops](https://github.com/zeuxisoo/php-slim-whoops) for displaying errors\
[Twig-Translate](https://github.com/darkalchemy/Twig-Translate) for translations\
[umpirsky/composer-permissions-handler](https://github.com/umpirsky/PermissionsHandler) to set folder permissions for log and cache folders\
[Vlucas/Valitron](https://github.com/vlucas/valitron) for validation
To install using composer
```text
composer create-project darkalchemy/slim-auth
```
cd into project, edit config/settings.php as needed and create the database.
```text
cd slim-auth
nano config/settings.php
```
After install
```text
composer migrate # import database
```
To update for development
```text
composer install # install non-dev dependencies
npm install # install dependencies
npm run build-dev # create initial js/css resources
composer compile # compile twig templates
composer migrate # import database
```
To update for production
```text
composer install --no-dev # install non-dev dependencies
npm install # install dependencies
npm run build # create initial js/css resources
composer compile # compile twig templates
composer migrate # import database
```
Set up cron job, this is necessary to be able to run scripts as www-data when needed
```text
sudo crontab -e
## add this to root crontab
* * * * * cd /path/to/bin folder/ && /usr/bin/php jobby.php 1>> /dev/null 2>&1
```
Emails do not get sent directly, they are inserted into the database and jobby will take care of sending them.
Compile twig templates for translating
```text
composer compile
```
Translate all php files to locale - en_US
```text
composer translate en_US
```
Add additional locales
```text
## check if locale is installed
locale -a
## find correct local
nano /usr/share/i18n/SUPPORTED
## in order to test the locale switcher, I needed to have another locale translated. I translated
## this using Google Translate, so the translation quality may not be very good. Please consider a
## pull request to improve the quality of the translation.
## add locale if not already installed (fr_FR)
sudo locale-gen fr_FR
sudo locale-gen fr_FR.UTF-8
sudo update-locale
## restart webserver (apache2|nginx)
sudo service nginx restart
## edit bootstrap/container.php and add the correct locale to the 'I18n::class' section
nano bootstrap/container.php
```
Translate all php files to locale - fr_FR
```text
composer translate fr_FR
```
Then open locale/\*\*/LC_MESSAGES/messages.po in poedit and edit translation.
Then to create the binary forms of the translations, you need to run again for each locale
```text
composer translate en_EN
composer translate fr_FR
```
## Notes
If you want to use redis as your session handler, you should add this to php.ini and uncomment as needed, TCP or Socket
```text
; TCP
; session.save_handler = redis
; session.save_path = "tcp://127.0.0.1:6379?prefix=SlimAuth:&database=1"
; UNIX Socket
; session.save_handler = redis
; session.save_path = "unix:///dev/shm/redis.sock?prefix=SlimAuth:&database=1"
```
and add this to your redis.ini file
```text
redis.session.locking_enabled=1
```
Add these to your apcu.ini
```text
apc.enable_cli=1
apc.slam_defense=1
```
## Available command line commands
```text
composer cleanup # runs php_cs_fixer
composer clear_cache # clears all file based caches
composer compile # compile all twig templates
composer create-migration # create new migration class
composer migrate # migrate the database
composer rollback # rollback all database changes
composer set-perms # set writable perms for cache/log folders for both webserver and cli
composer translate [lang] # translate all strings for listed language
composer translate-all # translate all strings for all currently available languages
npm build # create minified js/css resources
npm build-dev # create js/css resources
```
## TODO
phpunit for testing.
## Credits
Much of what I have done here I learned from watching videos on youtube, [Laracasts](https://laracasts.com/), [Codecourse](https://codecourse.com) and from what I have read in many of the online tutorials and Slim Skeletons on github.\
[Slim4-Skeleton](https://github.com/odan/slim4-skeleton), [Slim-Skeleton](https://github.com/slimphp/Slim-Skeleton) and [Slim4-Starter](https://github.com/akrabat/slim4-starter) to list just a few.
I still have a long way to go, but I'm enjoying the trip. This should not be used for any production websites as there are still many things to correct.