You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
3.4KB

  1. import 'dart:developer';
  2. import 'package:hive/hive.dart';
  3. import '../presentation/screens/login/models/response_user.dart';
  4. final LocalStorage = HiveLocalStorage();
  5. class HiveLocalStorage {
  6. final box = Hive.box('LocalDBName');
  7. void open() {
  8. Hive.openBox('LocalDBName');
  9. }
  10. String getString(String key, {String? defaultValue}) {
  11. try {
  12. return box.get(key, defaultValue: defaultValue ?? '');
  13. } catch (_) {
  14. return '';
  15. }
  16. }
  17. int getInt(String key, {int? defaultValue}) {
  18. try {
  19. return box.get(key, defaultValue: defaultValue ?? -1);
  20. } catch (_) {
  21. return -1;
  22. }
  23. }
  24. bool getBool(String key, {bool? defaultValue}) {
  25. try {
  26. return box.get(key, defaultValue: defaultValue ?? false);
  27. } catch (_) {
  28. return false;
  29. }
  30. }
  31. dynamic getObject(String key) {
  32. try {
  33. return box.get(key);
  34. } catch (_) {
  35. return null;
  36. }
  37. }
  38. void save(String key, dynamic value) {
  39. box.put(key, value);
  40. }
  41. void clearUserInfo() {
  42. LocalStorage.save(LocalStorageKey.is_logged, false);
  43. LocalStorage.save(LocalStorageKey.access_token, '');
  44. LocalStorage.save(LocalStorageKey.full_name, '');
  45. LocalStorage.save(LocalStorageKey.user_id, '');
  46. // LocalStorage.save(LocalStorageKey.username, '');
  47. LocalStorage.save(LocalStorageKey.trai_hien_tai, '');
  48. LocalStorage.save(LocalStorageKey.ten_hien_tai, '');
  49. LocalStorage.save(LocalStorageKey.ma_trais, []);
  50. LocalStorage.save(LocalStorageKey.user_roles, []);
  51. LocalStorage.save(LocalStorageKey.user_roles_by_tenants, []);
  52. }
  53. void saveUserInfo(ResponseUser data, String username) {
  54. try {
  55. // var decodedToken = JwtDecoder.decode(data.accessToken!);
  56. // var givenName = decodedToken['given_name'] ?? '';
  57. // var fullName = decodedToken['family_name'] ?? '';
  58. // var userId = decodedToken['userid'] ?? '';
  59. // var roles = decodedToken['http://schemas.microsoft.com/ws/2008/06/identity/claims/role'] as List;
  60. // var roles = decodedToken['resource_access']['uca']['roles'] as List;
  61. // var userRoles = roles.join('|');
  62. // LocalStorage.save(LocalStorageKey.user_permission, userRoles);
  63. LocalStorage.save(LocalStorageKey.is_logged, true);
  64. LocalStorage.save(LocalStorageKey.username, username);
  65. LocalStorage.save(LocalStorageKey.access_token, data.accessToken);
  66. LocalStorage.save(LocalStorageKey.refresh_token, '');
  67. // LocalStorage.save(LocalStorageKey.given_name, givenName);
  68. // LocalStorage.save(LocalStorageKey.full_name, fullName);
  69. // LocalStorage.save(LocalStorageKey.user_id, userId);
  70. // LocalStorage.save(LocalStorageKey.user_roles, roles);
  71. } catch (e) {
  72. print(e);
  73. }
  74. }
  75. }
  76. class LocalStorageKey {
  77. static const String username = 'username';
  78. static const String access_token = 'access_token';
  79. static const String refresh_token = 'refresh_token';
  80. static const String is_logged = 'is_logged';
  81. static const String full_name = 'full_name';
  82. static const String given_name = 'given_name';
  83. static const String user_id = 'user_id';
  84. static const String user_roles = 'user_roles';
  85. static const String user_roles_by_tenants = 'user_roles_by_tenants';
  86. static const String ma_trais = 'ma_trais';
  87. static const String ten_trais = 'ten_trais';
  88. static const String trai_hien_tai = 'trai_hien_tai';
  89. static const String ten_hien_tai = 'ten_hien_tai';
  90. static const String device_key = 'device_key';
  91. }