// Copyright (C) 2023 WYATT GROUP // Please see the AUTHORS file for details. // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . import 'package:equatable/equatable.dart'; import 'package:wyatt_architecture/wyatt_architecture.dart'; /// Represents a user [Account] in the /// various identity provisioning systems. class Account extends Equatable implements Entity { const Account({ required this.id, required this.isAnonymous, required this.emailVerified, required this.providerId, this.email, this.phoneNumber, this.photoURL, this.creationTime, this.lastSignInTime, this.isNewUser, this.accessToken, this.refreshToken, }); /// The user's unique ID. final String id; /// Returns whether the user is a anonymous. final bool isAnonymous; /// The users email address. /// /// Will be `null` if signing in anonymously. final String? email; /// Returns whether the users email address has been verified. /// /// To send a verification email, see `SendEmailVerification`. final bool emailVerified; /// Returns the users phone number. /// /// This property will be `null` if the user has not signed in or been has /// their phone number linked. final String? phoneNumber; /// Returns a photo URL for the user. /// /// This property will be populated if the user has signed in or been linked /// with a 3rd party OAuth provider (such as Google). final String? photoURL; /// Returns the users account creation time. /// /// When this account was created as dictated by the server clock. final DateTime? creationTime; /// When the user last signed in as dictated by the server clock. final DateTime? lastSignInTime; /// Whether the user account has been recently created. final bool? isNewUser; /// The provider ID for the user. final String providerId; /// The user access token final String? accessToken; /// The user refresh token final String? refreshToken; @override List get props => [ id, isAnonymous, email, emailVerified, phoneNumber, photoURL, creationTime, lastSignInTime, providerId, isNewUser, accessToken, refreshToken, ]; @override bool get stringify => true; }