Role a oprávnění
Role a oprávnění slouží k omezení přístupu uživatelů k jednotlivým částem aplikace (resources). Megio k tomuto účelu využívá Role-Based Access Control (RBAC) a autentizační mechanizmus JWT (JSON Web Token).
Základní paradigma
- Každý uživatel může mít nula a více rolí.
- Každá role obsahuje libovolné množství resources.
- Pokud má uživatel více rolí, resources se slučují.
- Role může spravovat pouze administrátor.
Typy resources
- Data kolekcí - ovlivňuje přístup ke CRUD operacím nad kolekcemi.
- Menu kolekcí - ovlivňuje přístup k jednotlivým položkám v menu kolekcí.
- Router - ovlivňuje přístup k jednotlivým backend routám aplikace.
- Vue router - ovlivňuje přístup k jednotlivým views definovaným ve Vue Routeru.
Správa rolí a oprávnění
Role a oprávnění lze editovat přímo v admin panelu na adrese: http://localhost:8090/app/settings/resources
Jak vytvořit novou roli
V přehledu rolí klikněte na tlačítko Nová role a v políčku zadejte název nové role - následně budete moci zaškrtnout jednotlivé resources, které chcete přiřadit nové roli.
Jak přidat resource
Megio panel automaticky detekuje nové resources a zobrazí je v přehledu oprávnění. Jediné, co je potřeba udělat, je kliknout na tlačítko Aktualizovat. Aktualizaci je nutné provést vždy při vytvoření či úpravě kolekcí, backend routeru či Vue routeru.
Vypnutí detekce resource
V některých případech může přijít vhod vypnutí resources - například u veřejných rout u webových stránek.
Vypnutí lze provést nastavením parametru auth
na false
přímo u konkrétní routy. Parametr auth
ovlivňuje i to,
zda se resource zobrazí v přehledu oprávnění.
Backend router
$routes->add('home', '/')
->methods(['GET'])
->controller([\App\Http\Controller\HomeController::class, 'index'])
->options(['auth' => false]);
Frontend (vue) router
const routes: Array<RouteRecordRaw> = [
{
path: '/',
name: 'megio.view.login',
meta: { auth: false },
component: () => import('@/views/public/Login.vue')
}
]
Skrytí resource
V některých případech může být vhodné skrýt některé resources v přehledu oprávnění, ale nevypínat jejich detekci.
Například, když nechcete zobrazovat administrátorské routy. Toto chování lze nastavit pomocí parametru
inResources
na false
.
Backend router
$routes->add('megio.admin.avatar', '/megio/admin/avatar')
->methods(['POST'])
->controller(Admin\UploadAvatarRequest::class)
->options(['inResources' => false]);
Frontend (vue) router
const routes: Array<RouteRecordRaw> = [
{
path: '/settings/admins',
name: 'megio.view.settings.admins',
meta: { inResources: false },
component: () => import('@/views/settings/admin/ReadAll.vue')
}
]