Skip to content

Commit ff9f6f0

Browse files
authored
requireAuthenticatedAdmin returns SupportAgent (#7838)
1 parent 9203001 commit ff9f6f0

File tree

6 files changed

+10
-23
lines changed

6 files changed

+10
-23
lines changed

app/lib/account/backend.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ Future<AuthenticatedUser> requireAuthenticatedWebUser() async {
8484
/// the given [permission].
8585
///
8686
/// Throws [AuthorizationException] if it doesn't have the permission.
87-
Future<AuthenticatedGcpServiceAccount> requireAuthenticatedAdmin(
87+
Future<SupportAgent> requireAuthenticatedAdmin(
8888
AdminPermission permission) async {
8989
final agent = await _requireAuthenticatedAgent();
9090
if (agent is AuthenticatedGcpServiceAccount) {
@@ -96,7 +96,7 @@ Future<AuthenticatedGcpServiceAccount> requireAuthenticatedAdmin(
9696
'Authenticated user (${agent.displayId}) is trying to access unauthorized admin APIs.');
9797
throw AuthorizationException.userIsNotAdminForPubSite();
9898
}
99-
return agent;
99+
return SupportAgent();
100100
} else {
101101
throw AuthenticationException.tokenInvalid('not a GCP service account');
102102
}

app/lib/account/consent_backend.dart

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ class ConsentBackend {
106106
/// - if it was sent recently, do nothing.
107107
Future<api.InviteStatus> _invite({
108108
required AuthenticatedAgent activeAgent,
109-
required User activeUser,
110109
required String email,
111110
required String kind,
112111
required List<String> args,
@@ -129,7 +128,7 @@ class ConsentBackend {
129128
await _delete(old, (a) => a.onExpire(old));
130129
} else if (old.shouldNotify()) {
131130
// non-expired entries just re-send the notification
132-
return await _sendNotification(activeUser.email!, old);
131+
return await _sendNotification(activeAgent.displayId, old);
133132
} else {
134133
return api.InviteStatus(
135134
emailSent: false, nextNotification: old.nextNotification);
@@ -146,20 +145,18 @@ class ConsentBackend {
146145
consent,
147146
auditLogRecord,
148147
]);
149-
return await _sendNotification(activeUser.email!, consent);
148+
return await _sendNotification(activeAgent.displayId, consent);
150149
});
151150
}
152151

153152
/// Invites a new uploader to the package.
154153
Future<api.InviteStatus> invitePackageUploader({
155154
required AuthenticatedAgent agent,
156-
required User activeUser,
157155
required String packageName,
158156
required String uploaderEmail,
159157
}) async {
160158
return await _invite(
161159
activeAgent: agent,
162-
activeUser: activeUser,
163160
email: uploaderEmail,
164161
kind: ConsentKind.packageUploader,
165162
args: [packageName],
@@ -180,7 +177,6 @@ class ConsentBackend {
180177
final user = authenticatedUser.user;
181178
return await _invite(
182179
activeAgent: authenticatedUser,
183-
activeUser: user,
184180
email: contactEmail,
185181
kind: ConsentKind.publisherContact,
186182
args: [publisherId, contactEmail],
@@ -192,13 +188,11 @@ class ConsentBackend {
192188
/// Invites a new member for the publisher.
193189
Future<api.InviteStatus> invitePublisherMember({
194190
required AuthenticatedAgent authenticatedAgent,
195-
required User activeUser,
196191
required String publisherId,
197192
required String invitedUserEmail,
198193
}) async {
199194
return await _invite(
200195
activeAgent: authenticatedAgent,
201-
activeUser: activeUser,
202196
email: invitedUserEmail,
203197
kind: ConsentKind.publisherMember,
204198
args: [publisherId],

app/lib/admin/backend.dart

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import 'package:convert/convert.dart';
1414
import 'package:gcloud/service_scope.dart' as ss;
1515
import 'package:logging/logging.dart';
1616
import 'package:pool/pool.dart';
17-
import 'package:pub_dev/account/agent.dart';
1817
import 'package:pub_semver/pub_semver.dart';
1918

2019
import '../account/backend.dart';
@@ -598,7 +597,7 @@ class AdminBackend {
598597
Future<api.PackageUploaders> handleAddPackageUploader(
599598
String packageName, String email) async {
600599
checkPackageVersionParams(packageName);
601-
final authenticatedUser =
600+
final authenticatedAgent =
602601
await requireAuthenticatedAdmin(AdminPermission.managePackageOwnership);
603602
final package = await packageBackend.lookupPackage(packageName);
604603
if (package == null) {
@@ -609,10 +608,8 @@ class AdminBackend {
609608
InvalidInputException.check(
610609
isValidEmail(uploaderEmail), 'Not a valid email: `$uploaderEmail`.');
611610

612-
final user = await accountBackend.userForServiceAccount(authenticatedUser);
613611
await consentBackend.invitePackageUploader(
614-
agent: SupportAgent(),
615-
activeUser: user,
612+
agent: authenticatedAgent,
616613
packageName: packageName,
617614
uploaderEmail: uploaderEmail,
618615
);
@@ -625,7 +622,7 @@ class AdminBackend {
625622
Future<api.PackageUploaders> handleRemovePackageUploader(
626623
String packageName, String email) async {
627624
checkPackageVersionParams(packageName);
628-
final authenticatedUser =
625+
final authenticatedAgent =
629626
await requireAuthenticatedAdmin(AdminPermission.managePackageOwnership);
630627
final package = await packageBackend.lookupPackage(packageName);
631628
if (package == null) {
@@ -650,7 +647,7 @@ class AdminBackend {
650647
if (r) {
651648
removed = true;
652649
tx.insert(await AuditLogRecord.uploaderRemoved(
653-
agent: authenticatedUser,
650+
agent: authenticatedAgent,
654651
package: packageName,
655652
uploaderUser: uploaderUser,
656653
));
@@ -660,7 +657,7 @@ class AdminBackend {
660657
if (p.uploaders!.isEmpty) {
661658
p.isDiscontinued = true;
662659
tx.insert(await AuditLogRecord.packageOptionsUpdated(
663-
agent: authenticatedUser,
660+
agent: authenticatedAgent,
664661
package: packageName,
665662
publisherId: p.publisherId,
666663
options: ['discontinued'],

app/lib/admin/tools/publisher_member.dart

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import 'dart:async';
66

77
import 'package:_pub_shared/data/publisher_api.dart';
8-
import 'package:pub_dev/account/agent.dart';
98
import 'package:pub_dev/account/backend.dart';
109
import 'package:pub_dev/account/consent_backend.dart';
1110
import 'package:pub_dev/publisher/backend.dart';
@@ -36,8 +35,7 @@ Future<String> executePublisherInviteMember(List<String> args) async {
3635
await publisherBackend.verifyPublisherMemberInvite(
3736
publisherId, InviteMemberRequest(email: invitedEmail));
3837
await consentBackend.invitePublisherMember(
39-
authenticatedAgent: SupportAgent(),
40-
activeUser: await accountBackend.userForServiceAccount(authenticatedAgent),
38+
authenticatedAgent: authenticatedAgent,
4139
publisherId: publisherId,
4240
invitedUserEmail: invitedEmail,
4341
);

app/lib/package/backend.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1486,7 +1486,6 @@ class PackageBackend {
14861486

14871487
final status = await consentBackend.invitePackageUploader(
14881488
agent: authenticatedUser,
1489-
activeUser: user,
14901489
packageName: packageName,
14911490
uploaderEmail: uploaderEmail,
14921491
);

app/lib/publisher/backend.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,6 @@ class PublisherBackend {
394394
await verifyPublisherMemberInvite(publisherId, invite);
395395
return await consentBackend.invitePublisherMember(
396396
authenticatedAgent: authenticatedAgent,
397-
activeUser: authenticatedAgent.user,
398397
publisherId: publisherId,
399398
invitedUserEmail: invite.email,
400399
);

0 commit comments

Comments
 (0)