diff options
author | Chocobozzz <me@florianbigard.com> | 2023-01-19 09:29:47 +0100 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2023-01-19 13:53:40 +0100 |
commit | 9589907c89d29a6c0acd52c8cb789af9f93ce9af (patch) | |
tree | f1d238e6144231bbfbed5614e05a21eca8aa6fc2 /client/src/app/shared/shared-main | |
parent | b379759f55a35837b803a3b988674972db2903d1 (diff) | |
download | PeerTube-9589907c89d29a6c0acd52c8cb789af9f93ce9af.tar.gz PeerTube-9589907c89d29a6c0acd52c8cb789af9f93ce9af.tar.zst PeerTube-9589907c89d29a6c0acd52c8cb789af9f93ce9af.zip |
Implement signup approval in client
Diffstat (limited to 'client/src/app/shared/shared-main')
6 files changed, 37 insertions, 1 deletions
diff --git a/client/src/app/shared/shared-main/account/index.ts b/client/src/app/shared/shared-main/account/index.ts index b80ddb9f5..dd41a5f05 100644 --- a/client/src/app/shared/shared-main/account/index.ts +++ b/client/src/app/shared/shared-main/account/index.ts | |||
@@ -1,3 +1,4 @@ | |||
1 | export * from './account.model' | 1 | export * from './account.model' |
2 | export * from './account.service' | 2 | export * from './account.service' |
3 | export * from './actor.model' | 3 | export * from './actor.model' |
4 | export * from './signup-label.component' | ||
diff --git a/client/src/app/shared/shared-main/account/signup-label.component.html b/client/src/app/shared/shared-main/account/signup-label.component.html new file mode 100644 index 000000000..35d6c5360 --- /dev/null +++ b/client/src/app/shared/shared-main/account/signup-label.component.html | |||
@@ -0,0 +1,2 @@ | |||
1 | <ng-container i18n *ngIf="requiresApproval">Request an account</ng-container> | ||
2 | <ng-container i18n *ngIf="!requiresApproval">Create an account</ng-container> | ||
diff --git a/client/src/app/shared/shared-main/account/signup-label.component.ts b/client/src/app/shared/shared-main/account/signup-label.component.ts new file mode 100644 index 000000000..caacb9c6f --- /dev/null +++ b/client/src/app/shared/shared-main/account/signup-label.component.ts | |||
@@ -0,0 +1,9 @@ | |||
1 | import { Component, Input } from '@angular/core' | ||
2 | |||
3 | @Component({ | ||
4 | selector: 'my-signup-label', | ||
5 | templateUrl: './signup-label.component.html' | ||
6 | }) | ||
7 | export class SignupLabelComponent { | ||
8 | @Input() requiresApproval: boolean | ||
9 | } | ||
diff --git a/client/src/app/shared/shared-main/shared-main.module.ts b/client/src/app/shared/shared-main/shared-main.module.ts index c1523bc50..eb1642d97 100644 --- a/client/src/app/shared/shared-main/shared-main.module.ts +++ b/client/src/app/shared/shared-main/shared-main.module.ts | |||
@@ -16,7 +16,7 @@ import { | |||
16 | import { LoadingBarModule } from '@ngx-loading-bar/core' | 16 | import { LoadingBarModule } from '@ngx-loading-bar/core' |
17 | import { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client' | 17 | import { LoadingBarHttpClientModule } from '@ngx-loading-bar/http-client' |
18 | import { SharedGlobalIconModule } from '../shared-icons' | 18 | import { SharedGlobalIconModule } from '../shared-icons' |
19 | import { AccountService } from './account' | 19 | import { AccountService, SignupLabelComponent } from './account' |
20 | import { | 20 | import { |
21 | AutofocusDirective, | 21 | AutofocusDirective, |
22 | BytesPipe, | 22 | BytesPipe, |
@@ -113,6 +113,8 @@ import { VideoChannelService } from './video-channel' | |||
113 | UserQuotaComponent, | 113 | UserQuotaComponent, |
114 | UserNotificationsComponent, | 114 | UserNotificationsComponent, |
115 | 115 | ||
116 | SignupLabelComponent, | ||
117 | |||
116 | EmbedComponent, | 118 | EmbedComponent, |
117 | 119 | ||
118 | PluginPlaceholderComponent, | 120 | PluginPlaceholderComponent, |
@@ -171,6 +173,8 @@ import { VideoChannelService } from './video-channel' | |||
171 | UserQuotaComponent, | 173 | UserQuotaComponent, |
172 | UserNotificationsComponent, | 174 | UserNotificationsComponent, |
173 | 175 | ||
176 | SignupLabelComponent, | ||
177 | |||
174 | EmbedComponent, | 178 | EmbedComponent, |
175 | 179 | ||
176 | PluginPlaceholderComponent, | 180 | PluginPlaceholderComponent, |
diff --git a/client/src/app/shared/shared-main/users/user-notification.model.ts b/client/src/app/shared/shared-main/users/user-notification.model.ts index bf8870a79..96e7b4dd0 100644 --- a/client/src/app/shared/shared-main/users/user-notification.model.ts +++ b/client/src/app/shared/shared-main/users/user-notification.model.ts | |||
@@ -83,6 +83,11 @@ export class UserNotification implements UserNotificationServer { | |||
83 | latestVersion: string | 83 | latestVersion: string |
84 | } | 84 | } |
85 | 85 | ||
86 | registration?: { | ||
87 | id: number | ||
88 | username: string | ||
89 | } | ||
90 | |||
86 | createdAt: string | 91 | createdAt: string |
87 | updatedAt: string | 92 | updatedAt: string |
88 | 93 | ||
@@ -97,6 +102,8 @@ export class UserNotification implements UserNotificationServer { | |||
97 | 102 | ||
98 | accountUrl?: string | 103 | accountUrl?: string |
99 | 104 | ||
105 | registrationsUrl?: string | ||
106 | |||
100 | videoImportIdentifier?: string | 107 | videoImportIdentifier?: string |
101 | videoImportUrl?: string | 108 | videoImportUrl?: string |
102 | 109 | ||
@@ -135,6 +142,7 @@ export class UserNotification implements UserNotificationServer { | |||
135 | 142 | ||
136 | this.plugin = hash.plugin | 143 | this.plugin = hash.plugin |
137 | this.peertube = hash.peertube | 144 | this.peertube = hash.peertube |
145 | this.registration = hash.registration | ||
138 | 146 | ||
139 | this.createdAt = hash.createdAt | 147 | this.createdAt = hash.createdAt |
140 | this.updatedAt = hash.updatedAt | 148 | this.updatedAt = hash.updatedAt |
@@ -208,6 +216,10 @@ export class UserNotification implements UserNotificationServer { | |||
208 | this.accountUrl = this.buildAccountUrl(this.account) | 216 | this.accountUrl = this.buildAccountUrl(this.account) |
209 | break | 217 | break |
210 | 218 | ||
219 | case UserNotificationType.NEW_USER_REGISTRATION_REQUEST: | ||
220 | this.registrationsUrl = '/admin/moderation/registrations/list' | ||
221 | break | ||
222 | |||
211 | case UserNotificationType.NEW_FOLLOW: | 223 | case UserNotificationType.NEW_FOLLOW: |
212 | this.accountUrl = this.buildAccountUrl(this.actorFollow.follower) | 224 | this.accountUrl = this.buildAccountUrl(this.actorFollow.follower) |
213 | break | 225 | break |
diff --git a/client/src/app/shared/shared-main/users/user-notifications.component.html b/client/src/app/shared/shared-main/users/user-notifications.component.html index e7cdb0183..a51e08292 100644 --- a/client/src/app/shared/shared-main/users/user-notifications.component.html +++ b/client/src/app/shared/shared-main/users/user-notifications.component.html | |||
@@ -215,6 +215,14 @@ | |||
215 | </div> | 215 | </div> |
216 | </ng-container> | 216 | </ng-container> |
217 | 217 | ||
218 | <ng-container *ngSwitchCase="20"> <!-- UserNotificationType.NEW_USER_REGISTRATION_REQUEST --> | ||
219 | <my-global-icon iconName="user-add" aria-hidden="true"></my-global-icon> | ||
220 | |||
221 | <div class="message" i18n> | ||
222 | User <a (click)="markAsRead(notification)" [routerLink]="notification.registrationsUrl">{{ notification.registration.username }}</a> wants to register on your instance | ||
223 | </div> | ||
224 | </ng-container> | ||
225 | |||
218 | <ng-container *ngSwitchDefault> | 226 | <ng-container *ngSwitchDefault> |
219 | <my-global-icon iconName="alert" aria-hidden="true"></my-global-icon> | 227 | <my-global-icon iconName="alert" aria-hidden="true"></my-global-icon> |
220 | 228 | ||