Skip to content

Commit 401103a

Browse files
author
serverpod_cloud
committed
feat: 78e41967de0ef13ee2cab02e44ec1af95536b0b2
1 parent 64342de commit 401103a

5 files changed

Lines changed: 364 additions & 298 deletions

File tree

ground_control_client/lib/src/protocol/client.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ class EndpointProjects extends _i1.EndpointRef {
477477
);
478478

479479
/// Invites a user to a project by assigning the specified project roles.
480+
/// If the user does not exist, a user invitation email is sent.
480481
///
481482
/// Throws [NotFoundException] if the project or any of the roles
482483
/// do not exist.

ground_control_client/lib/src/protocol/features/project/models/account_authorization.dart renamed to ground_control_client/lib/src/protocol/domains/users/models/account_authorization.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
// ignore_for_file: no_leading_underscores_for_library_prefixes
1212
import 'package:serverpod_client/serverpod_client.dart' as _i1;
1313

14+
/// This model and table is deprecated. Use UserInvitation instead.
1415
abstract class AccountAuthorization implements _i1.SerializableModel {
1516
AccountAuthorization._({
1617
this.id,

ground_control_client/lib/src/protocol/domains/users/models/user.dart

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010

1111
// ignore_for_file: no_leading_underscores_for_library_prefixes
1212
import 'package:serverpod_client/serverpod_client.dart' as _i1;
13-
import '../../../features/project/models/user_role_membership.dart' as _i2;
13+
import '../../../domains/users/models/user_account_status.dart' as _i2;
14+
import '../../../features/project/models/user_role_membership.dart' as _i3;
1415

1516
/// Represents a Serverpod cloud customer user.
1617
abstract class User implements _i1.SerializableModel {
@@ -19,26 +20,28 @@ abstract class User implements _i1.SerializableModel {
1920
DateTime? createdAt,
2021
DateTime? updatedAt,
2122
this.archivedAt,
22-
required this.userAuthId,
23+
_i2.UserAccountStatus? accountStatus,
24+
this.userAuthId,
2325
this.displayName,
2426
required this.email,
2527
this.image,
2628
this.memberships,
27-
int? maxOwnedProjects,
29+
this.maxOwnedProjects,
2830
}) : createdAt = createdAt ?? DateTime.now(),
2931
updatedAt = updatedAt ?? DateTime.now(),
30-
maxOwnedProjects = maxOwnedProjects ?? 3;
32+
accountStatus = accountStatus ?? _i2.UserAccountStatus.registered;
3133

3234
factory User({
3335
int? id,
3436
DateTime? createdAt,
3537
DateTime? updatedAt,
3638
DateTime? archivedAt,
37-
required String userAuthId,
39+
_i2.UserAccountStatus? accountStatus,
40+
String? userAuthId,
3841
String? displayName,
3942
required String email,
4043
Uri? image,
41-
List<_i2.UserRoleMembership>? memberships,
44+
List<_i3.UserRoleMembership>? memberships,
4245
int? maxOwnedProjects,
4346
}) = _UserImpl;
4447

@@ -52,15 +55,17 @@ abstract class User implements _i1.SerializableModel {
5255
archivedAt: jsonSerialization['archivedAt'] == null
5356
? null
5457
: _i1.DateTimeJsonExtension.fromJson(jsonSerialization['archivedAt']),
55-
userAuthId: jsonSerialization['userAuthId'] as String,
58+
accountStatus: _i2.UserAccountStatus.fromJson(
59+
(jsonSerialization['accountStatus'] as String)),
60+
userAuthId: jsonSerialization['userAuthId'] as String?,
5661
displayName: jsonSerialization['displayName'] as String?,
5762
email: jsonSerialization['email'] as String,
5863
image: jsonSerialization['image'] == null
5964
? null
6065
: _i1.UriJsonExtension.fromJson(jsonSerialization['image']),
6166
memberships: (jsonSerialization['memberships'] as List?)
6267
?.map((e) =>
63-
_i2.UserRoleMembership.fromJson((e as Map<String, dynamic>)))
68+
_i3.UserRoleMembership.fromJson((e as Map<String, dynamic>)))
6469
.toList(),
6570
maxOwnedProjects: jsonSerialization['maxOwnedProjects'] as int?,
6671
);
@@ -77,8 +82,11 @@ abstract class User implements _i1.SerializableModel {
7782

7883
DateTime? archivedAt;
7984

85+
/// The status of the user's account.
86+
_i2.UserAccountStatus accountStatus;
87+
8088
/// External user authentication id. Must be unique.
81-
String userAuthId;
89+
String? userAuthId;
8290

8391
String? displayName;
8492

@@ -89,10 +97,9 @@ abstract class User implements _i1.SerializableModel {
8997
Uri? image;
9098

9199
/// The role memberships of this user.
92-
List<_i2.UserRoleMembership>? memberships;
100+
List<_i3.UserRoleMembership>? memberships;
93101

94102
/// Max number of projects this user can own.
95-
/// If null, the default value is used.
96103
int? maxOwnedProjects;
97104

98105
/// Returns a shallow copy of this [User]
@@ -103,11 +110,12 @@ abstract class User implements _i1.SerializableModel {
103110
DateTime? createdAt,
104111
DateTime? updatedAt,
105112
DateTime? archivedAt,
113+
_i2.UserAccountStatus? accountStatus,
106114
String? userAuthId,
107115
String? displayName,
108116
String? email,
109117
Uri? image,
110-
List<_i2.UserRoleMembership>? memberships,
118+
List<_i3.UserRoleMembership>? memberships,
111119
int? maxOwnedProjects,
112120
});
113121
@override
@@ -117,7 +125,8 @@ abstract class User implements _i1.SerializableModel {
117125
'createdAt': createdAt.toJson(),
118126
'updatedAt': updatedAt.toJson(),
119127
if (archivedAt != null) 'archivedAt': archivedAt?.toJson(),
120-
'userAuthId': userAuthId,
128+
'accountStatus': accountStatus.toJson(),
129+
if (userAuthId != null) 'userAuthId': userAuthId,
121130
if (displayName != null) 'displayName': displayName,
122131
'email': email,
123132
if (image != null) 'image': image?.toJson(),
@@ -141,17 +150,19 @@ class _UserImpl extends User {
141150
DateTime? createdAt,
142151
DateTime? updatedAt,
143152
DateTime? archivedAt,
144-
required String userAuthId,
153+
_i2.UserAccountStatus? accountStatus,
154+
String? userAuthId,
145155
String? displayName,
146156
required String email,
147157
Uri? image,
148-
List<_i2.UserRoleMembership>? memberships,
158+
List<_i3.UserRoleMembership>? memberships,
149159
int? maxOwnedProjects,
150160
}) : super._(
151161
id: id,
152162
createdAt: createdAt,
153163
updatedAt: updatedAt,
154164
archivedAt: archivedAt,
165+
accountStatus: accountStatus,
155166
userAuthId: userAuthId,
156167
displayName: displayName,
157168
email: email,
@@ -169,7 +180,8 @@ class _UserImpl extends User {
169180
DateTime? createdAt,
170181
DateTime? updatedAt,
171182
Object? archivedAt = _Undefined,
172-
String? userAuthId,
183+
_i2.UserAccountStatus? accountStatus,
184+
Object? userAuthId = _Undefined,
173185
Object? displayName = _Undefined,
174186
String? email,
175187
Object? image = _Undefined,
@@ -181,11 +193,12 @@ class _UserImpl extends User {
181193
createdAt: createdAt ?? this.createdAt,
182194
updatedAt: updatedAt ?? this.updatedAt,
183195
archivedAt: archivedAt is DateTime? ? archivedAt : this.archivedAt,
184-
userAuthId: userAuthId ?? this.userAuthId,
196+
accountStatus: accountStatus ?? this.accountStatus,
197+
userAuthId: userAuthId is String? ? userAuthId : this.userAuthId,
185198
displayName: displayName is String? ? displayName : this.displayName,
186199
email: email ?? this.email,
187200
image: image is Uri? ? image : this.image,
188-
memberships: memberships is List<_i2.UserRoleMembership>?
201+
memberships: memberships is List<_i3.UserRoleMembership>?
189202
? memberships
190203
: this.memberships?.map((e0) => e0.copyWith()).toList(),
191204
maxOwnedProjects:
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/* AUTOMATICALLY GENERATED CODE DO NOT MODIFY */
2+
/* To generate run: "serverpod generate" */
3+
4+
// ignore_for_file: implementation_imports
5+
// ignore_for_file: library_private_types_in_public_api
6+
// ignore_for_file: non_constant_identifier_names
7+
// ignore_for_file: public_member_api_docs
8+
// ignore_for_file: type_literal_in_constant_pattern
9+
// ignore_for_file: use_super_parameters
10+
11+
// ignore_for_file: no_leading_underscores_for_library_prefixes
12+
import 'package:serverpod_client/serverpod_client.dart' as _i1;
13+
14+
enum UserAccountStatus implements _i1.SerializableModel {
15+
/// User has been invited to access the system (implies pre-authorized).
16+
invited,
17+
18+
/// User has authenticated and registered an account.
19+
registered;
20+
21+
static UserAccountStatus fromJson(String name) {
22+
switch (name) {
23+
case 'invited':
24+
return UserAccountStatus.invited;
25+
case 'registered':
26+
return UserAccountStatus.registered;
27+
default:
28+
throw ArgumentError(
29+
'Value "$name" cannot be converted to "UserAccountStatus"');
30+
}
31+
}
32+
33+
@override
34+
String toJson() => name;
35+
@override
36+
String toString() => name;
37+
}

0 commit comments

Comments
 (0)