Class LettoToken

java.lang.Object
at.letto.security.LettoToken

public class LettoToken extends Object
Ein JWT-Token welcher in LeTTo verwendet wird als Objekt mit Methoden zur Analyse des Tokens
  • Field Details

    • ROLE_GLOBAL

      public static final String ROLE_GLOBAL
      globaler Administrator
      See Also:
    • ROLE_EXTERN

      public static final String ROLE_EXTERN
      Externer Benutzer
      See Also:
    • ROLE_CHANGE_ABOS

      public static final String ROLE_CHANGE_ABOS
      Wird für Abos benutzt - MAYT fragen wozu
      See Also:
    • ROLE_MULTIPLE_LOGIN

      public static final String ROLE_MULTIPLE_LOGIN
      mehrfacher Login zulässig
      See Also:
    • ROLE_PAYINGSTUDENT

      public static final String ROLE_PAYINGSTUDENT
      zahlender Student für LeTTo-Private
      See Also:
    • ROLE_STUDENT

      public static final String ROLE_STUDENT
      Student der Schule
      See Also:
    • ROLE_TEACHER

      public static final String ROLE_TEACHER
      Lehrer der Schule
      See Also:
    • ROLE_ADMIN

      public static final String ROLE_ADMIN
      Administrator der Schule
      See Also:
    • ROLE_DISABLED

      public static final String ROLE_DISABLED
      Benutzer ist deaktiviert
      See Also:
    • ROLE_USER_ABOS_CATEGORY

      public static final String ROLE_USER_ABOS_CATEGORY
      MAYT fragen
      See Also:
    • ROLE_USER_ABOS_USER

      public static final String ROLE_USER_ABOS_USER
      MAYT fragen
      See Also:
    • ROLE_USE_CURRENT_YEAR

      public static final String ROLE_USE_CURRENT_YEAR
      nur das aktuelle Schuljahr darf benutzt werden
      See Also:
    • ROLE_PREFIX_ORIGINUSER

      public static final String ROLE_PREFIX_ORIGINUSER
      Prefix für den Benutzernamen des Originalbenutzers wenn sich ein Lehrer/Admin als anderer User verkleidet hat
      See Also:
    • ROLE_SERVER

      public static final String ROLE_SERVER
      Rolle für die Authentifizierung eines Server-Tokens, der an Lehrer/Admins anderer Schulen weitergegeben wird
      See Also:
    • ROLE_CREATE_CATEGORY

      public static final String ROLE_CREATE_CATEGORY
      ein Externer Benutzer darf nur dann eine User-Category anlegen, wenn ROLE_CREATE_CATEGORY aktiv ist
      See Also:
    • token

      private final String token
    • secret

      private final String secret
    • created

      private final boolean created
    • claims

      private io.jsonwebtoken.Claims claims
    • jwt

      private io.jsonwebtoken.Jwt jwt
  • Constructor Details

  • Method Details

    • checkSecret

      private String checkSecret(String secret)
    • refreshToken

      public LettoToken refreshToken(String secret, long expiration)
      Parameters:
      secret - JWT-Secret
      expiration - Lebensdauer in ms
      Returns:
      Liefert einen neuen Token mit neuer Gültigkeitsdauer und sonst gleichen Daten
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • calculateExpirationDate

      private Date calculateExpirationDate(Date createdDate, Long expiration)
    • getValidMillis

      public long getValidMillis()
      Returns:
      gibt an wie lange der Token noch gültig ist
    • getUsername

      public String getUsername()
      Returns:
      Liefert den Benutzernamen welcher im Token gespeichert wurde
    • getExpirationDate

      public Date getExpirationDate()
      Returns:
      Liefert das Datum an dem der Token abläuft
    • getCreatedDate

      public Date getCreatedDate()
      Returns:
      Liefert das Datum an dem der Token erzeugt wurde
    • getIdUser

      public Integer getIdUser()
      Returns:
      Liefert die id eines Users
    • getIdSchule

      public Integer getIdSchule()
      Returns:
      Liefert die id der Schule
    • getId

      public Integer getId()
      Returns:
      Liefert die id des Users
    • getVorname

      public String getVorname()
      Returns:
      Liefert den Vornamen des Users
    • getNachname

      public String getNachname()
      Returns:
      Liefert den Nachnamen des Users
    • getActiveDirectoryName

      public String getActiveDirectoryName()
      Returns:
      Liefert den Activ-Directory-Namen des Users
    • getEmail

      public String getEmail()
      Returns:
      Liefert die Email-Adresse des Users
    • getSprache

      public String getSprache()
      Returns:
      Liefert die Spracheinstellung des Users
    • getSchool

      public String getSchool()
      Returns:
      Liefert den Kurznamen der Schule welcher auch in der URI zur Identifikation verwendet wird
    • getLettoUri

      public String getLettoUri()
      Returns:
      Liefert die URI der Schule
    • getServerRestkey

      public String getServerRestkey()
      Returns:
      Liefert den Restkey des Servers
    • getIssuer

      public String getIssuer()
      Returns:
      Liefert den Erzeuger des Tokens
    • getAudience

      public String getAudience()
      Returns:
      Liefert den Zuständigkeitsbereich des Tokens
    • getRoles

      public List<String> getRoles()
      Returns:
      Liefert eine Liste aller Rollen des Benutzers
    • getPayload

      public HashMap<String,String> getPayload()
      Returns:
      Liefert eine Hashmap des Payloads
    • getPayload

      public String getPayload(String key)
      Returns:
      Liefert eine Hashmap eines Wertes des Payloads
    • getRolesArray

      public String[] getRolesArray()
      Returns:
      Liefert alle Rollen des Benutzers als Array von Strings
    • getClaimFromToken

      private <T> T getClaimFromToken(Function<io.jsonwebtoken.Claims,T> claimsResolver)
    • getAllClaimsFromToken

      private io.jsonwebtoken.Claims getAllClaimsFromToken()
    • getJwt

      public io.jsonwebtoken.Jwt getJwt()
      Returns:
      Liefert eine Java-Web-Token-Darstellung des LeTTo-Tokens
    • isTokenNotExpired

      public boolean isTokenNotExpired()
      Returns:
      gibt an ob der Token noch gültig ist
    • isValid

      public boolean isValid()
      Returns:
      gibt an ob der Token gültige Inhalte hat, aber nicht ob er noch nicht abgelaufen ist ( siehe isTokenNotExpired )
    • validateToken

      public Optional<Boolean> validateToken()
      Returns:
      true wenn der Token noch nicht abgelaufen ist
    • hasRole

      public boolean hasRole(String role)
      Prüft ob der Token eine angegebenen Rolle hat
      Parameters:
      role - Rolle die geprüft werden soll
      Returns:
      true wenn der Token der Rolle entspricht
    • getOriginUser

      public String getOriginUser()
      Returns:
      Wenn der Token ein Alias-Token ist, der Benutzername welcher sich ursrpünglich eingeloggt hat, andernfalls ein Leerstring.
    • isAdmin

      public boolean isAdmin()
      Returns:
      true wenn der Benutzer nicht disabled ist und die Admin-Rolle hat
    • isGlobal

      public boolean isGlobal()
      Returns:
      true wenn der Benutzer nicht disabled ist und die Global-Rolle hat
    • isTeacher

      public boolean isTeacher()
      Returns:
      true wenn der Benutzer nicht disabled ist und die Teacher-Rolle hat
    • isStudent

      public boolean isStudent()
      Returns:
      true wenn der Benutzer nicht disabled ist und die Student-Rolle hat
    • isPayingStudent

      public boolean isPayingStudent()
      Returns:
      true wenn der Benutzer nicht disabled ist und die Paying-Student-Rolle hat
    • isMultipleLogin

      public boolean isMultipleLogin()
      Returns:
      true wenn der Benutzer nicht disabled ist und die Multiple-Login-Rolle hat
    • isExtern

      public boolean isExtern()
      Returns:
      true wenn der Benutzer nicht disabled ist und die Extern-Rolle hat
    • isAlias

      public boolean isAlias()
      Returns:
      true wenn es sich um einen Alias-Benutzer handelt - d.h. wenn sich ein Lehrer oder Admin als anderer User verkleidet hat