logon method

Future<bool> logon(
  1. Jwt jwt
)

Implementation

Future<bool> logon(Jwt jwt) async {
  // valid token?
  if (jwt.valid) {
    // set system token
    _jwt = jwt;
    _token.set(jwt.token);

    // set connected = true
    _connected.set(true);

    // set user claims
    jwt.claims.forEach((key, value) {
      key = key.toLowerCase().trim();
      switch (key) {
        case 'connected':
          break;

        case 'rights':
          _rights.set(value);
          break;

        case 'language':
          _language.set(value);
          break;

        default:
          if (_claims.containsKey(key)) {
            _claims[key]!.set(value);
          } else {
            _claims[key] =
                StringObservable(Binding.toKey(key), value, scope: scope);
          }
      }
    });

    // clear missing claims
    _claims.forEach((key, observable) =>
        jwt.claims.containsKey(key) ? null : observable.set(null));

    // set phrase language
    phrase.language = _language.get();

    return true;
  }

  // clear all claims
  else {
    return await logoff();
  }
}