Přeskočit na hlavní obsah

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

Role a oprávnění

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')
}
]