Files
syncrow-app/lib/features/auth/model/token.dart
2024-03-10 10:20:06 +03:00

46 lines
1.2 KiB
Dart

import 'dart:convert';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:syncrow_app/utils/helpers/decode_base64.dart';
class Token {
static const String loginAccessToken = 'access_token';
static const String loginRefreshToken = 'refreshToken';
final String accessToken;
final String refreshToken;
Token.emptyConstructor()
: accessToken = '',
refreshToken = '';
bool get accessTokenIsNotEmpty => accessToken.isNotEmpty;
Token(
this.accessToken,
this.refreshToken,
);
Token.refreshToken(this.refreshToken) : accessToken = '';
factory Token.fromJson(Map<String, dynamic> json) {
//save token to secure storage
var storage = const FlutterSecureStorage();
storage.write(key: loginAccessToken, value: json[loginAccessToken] ?? '');
//create token object ?
return Token(json[loginAccessToken] ?? '', json[loginRefreshToken] ?? '');
}
Map<String, String> toJson() => {loginRefreshToken: refreshToken};
Map<String, dynamic> decodeToken() {
final parts = accessToken.split('.');
if (parts.length != 3) {
throw Exception('invalid access token');
}
final payload = decodeBase64(parts[1]);
return json.decode(payload);
}
}