import 'dart:convert'; import 'package:filcnaplo/models/user.dart'; class JwtUtils { static Map? decodeJwt(String jwt) { var parts = jwt.split("."); if (parts.length != 3) return null; if (parts[1].length % 4 == 2) { parts[1] += "=="; } else if (parts[1].length % 4 == 3) { parts[1] += "="; } try { var payload = utf8.decode(base64Url.decode(parts[1])); return jsonDecode(payload); } catch (error) { // ignore: avoid_print print("ERROR: JwtUtils.decodeJwt: $error"); } return null; } static String? getNameFromJWT(String jwt) { var jwtData = decodeJwt(jwt); return jwtData?["name"]; } static Role? getRoleFromJWT(String jwt) { var jwtData = decodeJwt(jwt); switch (jwtData?["role"]) { case "Tanulo": return Role.student; case "Gondviselo": return Role.parent; } return null; } }