mirror of
https://github.com/R0m1k3/xtremobile.git
synced 2026-10-12 01:39:36 +02:00
69 lines
1.5 KiB
Dart
69 lines
1.5 KiB
Dart
import 'package:hive/hive.dart';
|
|
import 'package:equatable/equatable.dart';
|
|
|
|
part 'app_user.g.dart';
|
|
|
|
/// Hive model for local application users
|
|
///
|
|
/// Stores user credentials with hashed passwords and admin privileges
|
|
@HiveType(typeId: 0)
|
|
class AppUser extends Equatable {
|
|
@HiveField(0)
|
|
final String id;
|
|
|
|
@HiveField(1)
|
|
final String username;
|
|
|
|
/// Password hash in format "salt:hash"
|
|
@HiveField(2)
|
|
final String passwordHash;
|
|
|
|
@HiveField(3)
|
|
final bool isAdmin;
|
|
|
|
/// List of playlist IDs assigned to this user
|
|
@HiveField(4)
|
|
final List<String> assignedPlaylistIds;
|
|
|
|
@HiveField(5)
|
|
final DateTime createdAt;
|
|
|
|
const AppUser({
|
|
required this.id,
|
|
required this.username,
|
|
required this.passwordHash,
|
|
this.isAdmin = false,
|
|
this.assignedPlaylistIds = const [],
|
|
required this.createdAt,
|
|
});
|
|
|
|
/// Creates a copy of this user with updated fields
|
|
AppUser copyWith({
|
|
String? id,
|
|
String? username,
|
|
String? passwordHash,
|
|
bool? isAdmin,
|
|
List<String>? assignedPlaylistIds,
|
|
DateTime? createdAt,
|
|
}) {
|
|
return AppUser(
|
|
id: id ?? this.id,
|
|
username: username ?? this.username,
|
|
passwordHash: passwordHash ?? this.passwordHash,
|
|
isAdmin: isAdmin ?? this.isAdmin,
|
|
assignedPlaylistIds: assignedPlaylistIds ?? this.assignedPlaylistIds,
|
|
createdAt: createdAt ?? this.createdAt,
|
|
);
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [
|
|
id,
|
|
username,
|
|
passwordHash,
|
|
isAdmin,
|
|
assignedPlaylistIds,
|
|
createdAt,
|
|
];
|
|
}
|