feat : role And permission

This commit is contained in:
2025-09-06 14:50:02 +03:30
parent bdf5344451
commit 34609d22a1
34 changed files with 657 additions and 306 deletions

View File

@@ -0,0 +1,61 @@
import 'package:rasadyar_core/core.dart';
part 'app_model.g.dart';
@HiveType(typeId: appModelTypeId)
class AppModel extends HiveObject {
@HiveField(0, defaultValue: true)
bool? isFirstRun;
@HiveField(1)
bool? isDarkMode;
@HiveField(2)
Module? selectedModule;
@HiveField(3)
List<TargetPage>? targetPages;
AppModel({this.isFirstRun, this.isDarkMode, this.selectedModule, this.targetPages});
AppModel copyWith({
bool? isFirstRun,
bool? isDarkMode,
Module? selectedModule,
List<TargetPage>? targetPages,
}) {
return AppModel(
isFirstRun: isFirstRun ?? this.isFirstRun,
isDarkMode: isDarkMode ?? this.isDarkMode,
selectedModule: selectedModule ?? this.selectedModule,
targetPages: targetPages ?? this.targetPages,
);
}
@override
String toString() {
return 'AppModel{isFirstRun: $isFirstRun, isDarkMode: $isDarkMode, selectedModule: $selectedModule, targetPages: $targetPages}';
}
}
@HiveType(typeId: targetTypeId)
class TargetPage extends HiveObject {
@HiveField(0)
String? route;
@HiveField(1)
List<String>? functions;
@HiveField(2)
Module? module;
TargetPage({required this.route, this.functions, this.module});
TargetPage copyWith({String? route, List<String>? functions, Module? module}) {
return TargetPage(
route: route ?? this.route,
functions: functions ?? this.functions,
module: module ?? this.module,
);
}
}

View File

@@ -0,0 +1,90 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'app_model.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class AppModelAdapter extends TypeAdapter<AppModel> {
@override
final typeId = 0;
@override
AppModel read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return AppModel(
isFirstRun: fields[0] == null ? true : fields[0] as bool?,
isDarkMode: fields[1] as bool?,
selectedModule: fields[2] as Module?,
targetPages: (fields[3] as List?)?.cast<TargetPage>(),
);
}
@override
void write(BinaryWriter writer, AppModel obj) {
writer
..writeByte(4)
..writeByte(0)
..write(obj.isFirstRun)
..writeByte(1)
..write(obj.isDarkMode)
..writeByte(2)
..write(obj.selectedModule)
..writeByte(3)
..write(obj.targetPages);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is AppModelAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}
class TargetPageAdapter extends TypeAdapter<TargetPage> {
@override
final typeId = 1;
@override
TargetPage read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return TargetPage(
route: fields[0] as String?,
functions: (fields[1] as List?)?.cast<String>(),
module: fields[2] as Module?,
);
}
@override
void write(BinaryWriter writer, TargetPage obj) {
writer
..writeByte(3)
..writeByte(0)
..write(obj.route)
..writeByte(1)
..write(obj.functions)
..writeByte(2)
..write(obj.module);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is TargetPageAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@@ -1,11 +1,12 @@
import 'package:rasadyar_core/core.dart';
import 'package:flutter/material.dart';
import 'package:rasadyar_core/core.dart';
part 'module_model.freezed.dart';
//این برای صفحه اول لیست ماژول هاست.
@freezed
abstract class ModuleModel with _$ModuleModel{
abstract class ModuleModel with _$ModuleModel {
factory ModuleModel({
required String title,
required String icon,
@@ -14,5 +15,4 @@ abstract class ModuleModel with _$ModuleModel{
required Color titleColor,
Module? module,
}) = _ModuleModel;
}
}

View File

@@ -1,17 +0,0 @@
import 'package:rasadyar_core/core.dart';
part 'target_page.g.dart';
@HiveType(typeId: targetPageTypeId)
class TargetPage extends HiveObject {
@HiveField(0)
String? route;
@HiveField(1)
List<String>? functions;
@HiveField(2)
Module? module;
TargetPage({required this.route, this.functions, this.module});
}

View File

@@ -1,44 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'target_page.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class TargetPageAdapter extends TypeAdapter<TargetPage> {
@override
final typeId = 2;
@override
TargetPage read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return TargetPage(
route: fields[0] as String,
functions: (fields[1] as List?)?.cast<String>(),
);
}
@override
void write(BinaryWriter writer, TargetPage obj) {
writer
..writeByte(2)
..writeByte(0)
..write(obj.route)
..writeByte(1)
..write(obj.functions);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is TargetPageAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@@ -6,17 +6,25 @@ part 'user_local_model.g.dart';
class UserLocalModel extends HiveObject {
@HiveField(0)
String? username;
@HiveField(1)
String? password;
@HiveField(2)
String? token;
@HiveField(3)
String? refreshToken;
@HiveField(5)
Module? module;
@HiveField(6)
String? backend;
@HiveField(7)
List<String>? roles;
UserLocalModel({
this.username,
this.password,
@@ -24,6 +32,7 @@ class UserLocalModel extends HiveObject {
this.refreshToken,
this.module,
this.backend,
this.roles,
});
UserLocalModel copyWith({
@@ -33,6 +42,7 @@ class UserLocalModel extends HiveObject {
String? refreshToken,
Module? module,
String? backend,
List<String>? roles,
}) {
return UserLocalModel(
username: username ?? this.username,
@@ -41,11 +51,17 @@ class UserLocalModel extends HiveObject {
refreshToken: refreshToken ?? this.refreshToken,
module: module ?? this.module,
backend: backend ?? this.backend,
roles: roles ?? this.roles,
);
}
@override
String toString() {
return 'UserLocalModel{username: $username, password: $password, token: $token, refreshToken: $refreshToken, module: $module, backend: $backend, roles: $roles}';
}
}
@HiveType(typeId: authModuleTypeId)
@HiveType(typeId: moduleTypeId)
enum Module {
@HiveField(0)
liveStocks,

View File

@@ -8,7 +8,7 @@ part of 'user_local_model.dart';
class UserLocalModelAdapter extends TypeAdapter<UserLocalModel> {
@override
final typeId = 0;
final typeId = 2;
@override
UserLocalModel read(BinaryReader reader) {
@@ -23,13 +23,14 @@ class UserLocalModelAdapter extends TypeAdapter<UserLocalModel> {
refreshToken: fields[3] as String?,
module: fields[5] as Module?,
backend: fields[6] as String?,
roles: (fields[7] as List?)?.cast<String>(),
);
}
@override
void write(BinaryWriter writer, UserLocalModel obj) {
writer
..writeByte(6)
..writeByte(7)
..writeByte(0)
..write(obj.username)
..writeByte(1)
@@ -41,7 +42,9 @@ class UserLocalModelAdapter extends TypeAdapter<UserLocalModel> {
..writeByte(5)
..write(obj.module)
..writeByte(6)
..write(obj.backend);
..write(obj.backend)
..writeByte(7)
..write(obj.roles);
}
@override
@@ -57,7 +60,7 @@ class UserLocalModelAdapter extends TypeAdapter<UserLocalModel> {
class ModuleAdapter extends TypeAdapter<Module> {
@override
final typeId = 1;
final typeId = 3;
@override
Module read(BinaryReader reader) {

View File

@@ -2,3 +2,4 @@
export 'pagination_model/pagination_model.dart';
export 'local/module/module_model.dart';
export 'local/user_local/user_local_model.dart';
export 'local/app_model/app_model.dart';