package hu.sch.web.authz;
import hu.sch.domain.Group;
import hu.sch.domain.user.User;
import org.apache.wicket.Application;
import org.apache.wicket.request.Request;
/**
* Ez az interfész felelős a usernév és jogosultságok lekérdezéséért
*
* @author hege
*/
public interface UserAuthorization {
/**
* Autorizációs mód inicializálása. DummyAuthorization használatakor
* ellenőrzi, hogy az alkalmazás development módban fut-e, ha nem abban van,
* kivételt dob.
*
* @param wicketApplication Az alkalmazás objektumára mutató referencia.
*/
void init(Application wicketApplication);
/**
* Az aktuálisan bejelentkezett felhasználó VIRID-ja.
*
* @param wicketRequest A Request objektum, amiből ki tudjuk nyerni a HTTP
* változókat.
* @return A távoli felhasználó VIRID-ja.
*/
Long getUserid(Request wicketRequest);
/**
* Az aktuálisan bejelentkezett felhasználó körvezetőségét vizsgálja.
*
* @param wicketRequest wicketRequest
* @param group group
* @return Körvezető-e az adott csoportban a felhasználó
*/
boolean isGroupLeaderInGroup(Request wicketRequest, Group group);
/**
* Az aktuálisan bejelentkezett felhasználó rendelkezik-e valamelyik
* csoportban az adott jogosultsággal.
*
* @param wicketRequest
* @return Körvezető-e valamelyik csoportban a felhasználó
*/
boolean isGroupLeaderInSomeGroup(Request wicketRequest);
/**
* A felhasználó rendelkezik-e az adott szerepkörrel (ADMIN|JETI|SVIE)
*
* @param wicketRequest wicketRequest
* @param role role
* @return Rendelkezik-e a felhasználó az adott szereppel
*/
boolean hasAbstractRole(Request wicketRequest, String role);
/**
* Az aktuálisan bejelentkezett felhasználó attribútumait adja vissza.
*
* @param wicketRequest
* @return Az Agent által átadott felhasználói attribútumok
*/
User getUserAttributes(Request wicketRequest);
/**
* Az aktuálisan bejelentkezett felhasználó uid-jét adja vissza
*
* @param wicketRequest
* @return A felhasználó egyedi azonosítója
*/
String getRemoteUser(Request wicketRequest);
}