stolz / wiki
Simple wiki engine built on Laravel.
Installs: 1 146
Dependents: 0
Suggesters: 0
Security: 0
Stars: 75
Watchers: 4
Forks: 17
Open Issues: 0
Type:project
Requires
- php: >=5.5.9
- baum/baum: ~1.1
- felixkiss/uniquewith-validator: 2.*
- gabrielbull/browser: 3.*
- laravel/framework: 5.1.*
- laravel/socialite: ~2.0
- league/commonmark: ~0.10
- phpspec/php-diff: ~1.0
- stolz/assets: dev-master
- stolz/laravel-form-builder: dev-master
Requires (Dev)
- barryvdh/laravel-debugbar: dev-master
- filp/whoops: ~1.0
- phpunit/phpunit: ~4.0
- spatie/laravel-tail: ~1.0
- squizlabs/php_codesniffer: ~2
- stolz/laravel-html-tidy: dev-master
This package is auto-updated.
Last update: 2024-10-13 02:33:06 UTC
README
A simple PHP wiki engine.
Features
- Backend based on Laravel 5.1 PHP framework. The code has a minimal footprint which makes the application very easy to customize to your needs.
- Frontend based on Zurb Foundation CSS framework which gives a clean responsive layout and a mobile-friendly user experience.
- Pages are written in Markdown with live preview of the final markup.
- User authentication/registration with one click via Oauth providers (Facebook, GitHub, Google and Twitter).
- Multilanguage support via Gettext.
- Included boilerplate to implement your own custom permissions system based on user roles.
Caveats
This project is not intended to be a mass distributed real world application but rather to server as a proof-of-concept and showcase of different technologies and concepts I enjoy using (RESTful architecture, Dependency Injection, Responsive design, SOLID principles, ...). Nevertheless it's being implemented to be 100% usable in real scenarios.
Install
Via git
git clone https://github.com/Stolz/Wiki.git --depth 1 wiki && cd wiki && composer install
Via composer
composer create-project stolz/wiki --prefer-dist --stability=dev --no-scripts && cd wiki
Once the project is installed configure it as any other Laravel app
$EDITOR .env
$EDITOR config/app.php
php artisan migrate --seed
Customizing permissions
Trying to perform an action (create, update, delete, ...) on any of the wiki resources (users, pages, categories, ...) will trigger the can()
method on the app/Role.php
file with the corresponding action and resouce parameters.
The default implementation of the function is very relaxed and allows all user roles to perform all action on all resources.
/**
* Determine if $this role is authorized to execute $action on $resource.
*
* @param string $action
* @param string $resource
* @return bool
*/
public function can($action, $resource)
{
return true;
}
To customize which actions can perform each user role you only need to add your logic to this method. A silly example could be:
// file: app/Role.php
public function can($action, $resource)
{
$currentUserProfile = $this->name;
// Admin role has no restrictions
if ($currentUserProfile === 'admin')
return true;
// Relaxed read permissions for all roles
if($action === 'index' or $action === 'show')
return true;
// Editor role can edit pages
if ($currentUserProfile === 'editor' and $resouce === 'page' and $action === 'edit')
return true;
// Manager role has full access to categories
if ($currentUserProfile === 'manager' and $resouce === 'category')
return true;
return false;
}
If you still want a more advanced permissions system feel free to fully replace the Permissions
middleware located at app/Http/Middleware/Permissions.php
.
License
MIT license. Check the included LICENSE.txt file for details.
(c) Stolz.