From 41893639f04d71dcbe6cab3c21cd4c78606224b5 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Thu, 6 Aug 2020 17:09:31 +0200 Subject: [PATCH] FEAT #14457 TIME 1:30 WIP Authorized route front --- src/app/user/controllers/UserController.php | 7 ++++++- .../user/user-administration.component.html | 8 +++++++- .../user/user-administration.component.ts | 12 +++++++++++- src/lang/lang-en.json | 3 ++- src/lang/lang-fr.json | 3 ++- 5 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/app/user/controllers/UserController.php b/src/app/user/controllers/UserController.php index f07016bc414..071f4d7c15c 100755 --- a/src/app/user/controllers/UserController.php +++ b/src/app/user/controllers/UserController.php @@ -286,7 +286,12 @@ class UserController $set['mode'] = $body['mode']; } - if ($body['mode'] == 'rest' && !empty($body['authorizedApi']) && is_array($body['authorizedApi'])) { + if ($body['mode'] == 'rest' && isset($body['authorizedApi']) && is_array($body['authorizedApi'])) { + foreach ($body['authorizedApi'] as $value) { + if (strpos($value, 'GET') !== 0 && strpos($value, 'POST') !== 0 && strpos($value, 'PUT') !== 0 && strpos($value, 'DELETE') !== 0) { + return $response->withStatus(400)->withJson(['errors' => 'Body authorizedApi is not well formatted']); + } + } $set['authorized_api'] = json_encode($body['authorizedApi']); } diff --git a/src/frontend/app/administration/user/user-administration.component.html b/src/frontend/app/administration/user/user-administration.component.html index 524aacc6739..6ff12d1f912 100755 --- a/src/frontend/app/administration/user/user-administration.component.html +++ b/src/frontend/app/administration/user/user-administration.component.html @@ -230,6 +230,12 @@ </mat-select> </mat-form-field> </div> + <div *ngIf="user.mode === 'rest'"> + <mat-form-field> + <mat-label>{{'this.lang.authorizedRoutes' | translate}}</mat-label> + <textarea matInput [(ngModel)]="user.authorizedApi" placeholder="POST/attachments\nPUT/attachments/{id}"></textarea> + </mat-form-field> + </div> </mat-expansion-panel> </mat-accordion> <div class="form-group" style="margin-top: 10px;"> @@ -577,4 +583,4 @@ </mat-list> </mat-sidenav> -</mat-sidenav-container> \ No newline at end of file +</mat-sidenav-container> diff --git a/src/frontend/app/administration/user/user-administration.component.ts b/src/frontend/app/administration/user/user-administration.component.ts index fe6745b6c69..f9e62fd03ae 100755 --- a/src/frontend/app/administration/user/user-administration.component.ts +++ b/src/frontend/app/administration/user/user-administration.component.ts @@ -35,7 +35,8 @@ export class UserAdministrationComponent implements OnInit { userId: string; mode: string = ''; user: any = { - mode : 'standard' + mode : 'standard', + authorizedApi : '' }; _search: string = ''; creationMode: boolean; @@ -173,6 +174,11 @@ export class UserAdministrationComponent implements OnInit { .subscribe((data: any) => { this.user = data; + if (this.user.mode == 'rest') { + this.user.authorizedApi = this.user.authorizedApi.join('\n'); + console.log(this.user.authorizedApi); + } + if (this.headerService.user.id === this.user.id) { this.canViewPersonalDatas = true; this.canManagePersonalDatas = true; @@ -903,6 +909,10 @@ export class UserAdministrationComponent implements OnInit { this.notify.error(err.error.errors); }); } else { + if (this.user.mode == 'rest') { + this.user.authorizedApi = this.user.authorizedApi.split('\n'); + console.log(this.user.authorizedApi); + } this.http.put('../rest/users/' + this.serialId, this.user) .subscribe((data: any) => { if (this.headerService.user.id == this.serialId) { diff --git a/src/lang/lang-en.json b/src/lang/lang-en.json index bc4b6fca9ef..7031c69ae86 100644 --- a/src/lang/lang-en.json +++ b/src/lang/lang-en.json @@ -1888,5 +1888,6 @@ "mustAtLeastMinValues": "The data must have at least <b>6</b> values", "enableField": "Enable field", "disableField": "Disable field", - "emailSubject": "E-mail's subject" + "emailSubject": "E-mail's subject", + "authorizedRoutes": "Authorized routes" } diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json index bfb4211408a..668a9b21d97 100644 --- a/src/lang/lang-fr.json +++ b/src/lang/lang-fr.json @@ -1883,5 +1883,6 @@ "mustAtLeastMinValues": "Les données doivent avoir au mimimum <b>6</b> valeurs", "enableField": "Activer le champ", "disableField": "Désactiver le champ", - "emailSubject": "Objet du courriel" + "emailSubject": "Objet du courriel", + "authorizedRoutes": "Routes autorisées" } -- GitLab