2020-08-12 08:47:53 +02:00
|
|
|
<app-detail-layout *ngIf="project" [backRouterLink]="[ '/projects', project?.projectId]"
|
2020-07-30 16:54:15 +02:00
|
|
|
title="{{projectName}} {{ 'PROJECT.MEMBER.TITLE' | translate }}"
|
|
|
|
|
description="{{ 'PROJECT.MEMBER.DESCRIPTION' | translate }}">
|
|
|
|
|
<app-refresh-table *ngIf="project" (refreshed)="changePage()" [dataSize]="dataSource.totalResult"
|
feat(console): user memberships, generic member create dialog, fix user autocomplete emitter (#606)
* load manager mgmtservice, user service
* add org memberships
* membership component, generic member creation
* refactor member create dialog
* project autocomplete context
* create batch managers in user component
* project context wrapper
* emit on user removal, preselect user on init
* membership avatar style, service
* auth user memberships, navigate to target
* cursor fix, avatar gen
* lint
* i18n fix
* remove role translations
* membership detail page, i18n
* fix role label i18n, after view init loader
* remove projectid from grant remove
* fix iam race condition
* refresh table ts, fix no permission project search
* change membership colors
* refresh table everywhere, replace assets, routing
* fix logo header size
* lint, fix project grant removal
* timestmp for p mem, user list, grants, p list (#615)
* npm audit
* update deps, resolve vulnerability
* fix tslint config
* update lock
* load 20 changes at once
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* Update console/src/assets/i18n/en.json
Co-authored-by: Florian Forster <florian@caos.ch>
* membership i18n
Co-authored-by: Florian Forster <florian@caos.ch>
2020-08-24 08:48:47 +02:00
|
|
|
[timestamp]="dataSource.viewTimestamp" [selection]="selection" [loading]="dataSource?.loading$ | async">
|
2020-07-30 16:54:15 +02:00
|
|
|
<ng-template appHasRole actions
|
|
|
|
|
[appHasRole]="['project.member.delete:' + project.projectId, 'project.member.delete']">
|
|
|
|
|
<button (click)="removeProjectMemberSelection()" color="warn"
|
|
|
|
|
matTooltip="{{'ORG_DETAIL.TABLE.DELETE' | translate}}" class="icon-button" mat-icon-button
|
|
|
|
|
*ngIf="selection.hasValue()">
|
|
|
|
|
<i class="las la-trash"></i>
|
|
|
|
|
</button>
|
|
|
|
|
</ng-template>
|
|
|
|
|
<ng-template appHasRole actions
|
|
|
|
|
[appHasRole]="['project.member.write:'+project.projectId,'project.member.write']">
|
|
|
|
|
<a color="primary" [disabled]="disabled" class="add-button" (click)="openAddMember()" color="primary"
|
|
|
|
|
mat-raised-button>
|
|
|
|
|
<mat-icon class="icon">add</mat-icon>{{ 'ACTIONS.NEW' | translate }}
|
|
|
|
|
</a>
|
|
|
|
|
</ng-template>
|
2020-05-13 14:41:43 +02:00
|
|
|
|
2020-07-30 16:54:15 +02:00
|
|
|
<div class="table-wrapper">
|
feat(console): identity providers and login policies (#722)
* idp list, idp create route
* idp modules, lazy import, i18n, routing
* generic service, i18n
* seperate lockout, age policy component
* seperate component modules
* routing
* enum class
* login policy
* iam policy grid
* login policy providers
* idps login policy
* add idp dialog component
* add idp to loginpolicy
* delete idp config, iam policy grid
* remove idp from loginpolicy
* idp detail component, generic idp create
* lint
* idp detail clientid-secrets, issuer, scopes
* hide clientsecret on update
* rm background style, idp config
* app tooltip fix
* lint
* dont refresh on idp select
* Update console/src/app/modules/idp-create/idp-create.component.html
Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
2020-09-17 10:22:41 +02:00
|
|
|
<table mat-table class="table" aria-label="Elements" [dataSource]="dataSource">
|
2020-07-30 16:54:15 +02:00
|
|
|
<ng-container matColumnDef="select">
|
|
|
|
|
<th class="selection" mat-header-cell *matHeaderCellDef>
|
|
|
|
|
<mat-checkbox color="primary" (change)="$event ? masterToggle() : null"
|
|
|
|
|
[checked]="selection.hasValue() && isAllSelected()"
|
|
|
|
|
[indeterminate]="selection.hasValue() && !isAllSelected()">
|
|
|
|
|
</mat-checkbox>
|
|
|
|
|
</th>
|
|
|
|
|
<td class="selection" mat-cell *matCellDef="let row">
|
|
|
|
|
<mat-checkbox color="primary" (click)="$event.stopPropagation()"
|
|
|
|
|
(change)="$event ? selection.toggle(row) : null" [checked]="selection.isSelected(row)">
|
|
|
|
|
</mat-checkbox>
|
|
|
|
|
</td>
|
|
|
|
|
</ng-container>
|
2020-05-13 14:41:43 +02:00
|
|
|
|
2020-06-26 16:45:18 +02:00
|
|
|
|
2020-07-30 16:54:15 +02:00
|
|
|
<ng-container matColumnDef="userId">
|
|
|
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.USERID' | translate }} </th>
|
|
|
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
|
|
|
{{member.userId}} </td>
|
|
|
|
|
</ng-container>
|
2020-06-26 16:45:18 +02:00
|
|
|
|
2020-07-30 16:54:15 +02:00
|
|
|
<ng-container matColumnDef="firstname">
|
|
|
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.FIRSTNAME' | translate }} </th>
|
|
|
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
|
|
|
{{member.firstName}} </td>
|
|
|
|
|
</ng-container>
|
2020-05-13 14:41:43 +02:00
|
|
|
|
2020-07-30 16:54:15 +02:00
|
|
|
<ng-container matColumnDef="lastname">
|
|
|
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.LASTNAME' | translate }} </th>
|
|
|
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
|
|
|
{{member.lastName}} </td>
|
|
|
|
|
</ng-container>
|
2020-05-13 14:41:43 +02:00
|
|
|
|
2020-07-30 16:54:15 +02:00
|
|
|
<ng-container matColumnDef="username">
|
|
|
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.USERNAME' | translate }} </th>
|
|
|
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
|
|
|
{{member.userName}} </td>
|
|
|
|
|
</ng-container>
|
2020-05-13 14:41:43 +02:00
|
|
|
|
2020-07-30 16:54:15 +02:00
|
|
|
<ng-container matColumnDef="email">
|
|
|
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'PROJECT.MEMBER.EMAIL' | translate }} </th>
|
|
|
|
|
<td class="pointer" [routerLink]="['/user', member.userId]" mat-cell *matCellDef="let member">
|
|
|
|
|
{{member.email}}
|
|
|
|
|
</td>
|
|
|
|
|
</ng-container>
|
2020-05-13 14:41:43 +02:00
|
|
|
|
2020-07-30 16:54:15 +02:00
|
|
|
<ng-container matColumnDef="roles">
|
feat(console): user memberships, generic member create dialog, fix user autocomplete emitter (#606)
* load manager mgmtservice, user service
* add org memberships
* membership component, generic member creation
* refactor member create dialog
* project autocomplete context
* create batch managers in user component
* project context wrapper
* emit on user removal, preselect user on init
* membership avatar style, service
* auth user memberships, navigate to target
* cursor fix, avatar gen
* lint
* i18n fix
* remove role translations
* membership detail page, i18n
* fix role label i18n, after view init loader
* remove projectid from grant remove
* fix iam race condition
* refresh table ts, fix no permission project search
* change membership colors
* refresh table everywhere, replace assets, routing
* fix logo header size
* lint, fix project grant removal
* timestmp for p mem, user list, grants, p list (#615)
* npm audit
* update deps, resolve vulnerability
* fix tslint config
* update lock
* load 20 changes at once
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* Update console/src/assets/i18n/en.json
Co-authored-by: Florian Forster <florian@caos.ch>
* membership i18n
Co-authored-by: Florian Forster <florian@caos.ch>
2020-08-24 08:48:47 +02:00
|
|
|
<th mat-header-cell *matHeaderCellDef> {{ 'ROLESLABEL' | translate }} </th>
|
2020-07-30 16:54:15 +02:00
|
|
|
<td mat-cell *matCellDef="let member">
|
|
|
|
|
<mat-form-field class="form-field" appearance="outline" *ngIf="project">
|
feat(console): user memberships, generic member create dialog, fix user autocomplete emitter (#606)
* load manager mgmtservice, user service
* add org memberships
* membership component, generic member creation
* refactor member create dialog
* project autocomplete context
* create batch managers in user component
* project context wrapper
* emit on user removal, preselect user on init
* membership avatar style, service
* auth user memberships, navigate to target
* cursor fix, avatar gen
* lint
* i18n fix
* remove role translations
* membership detail page, i18n
* fix role label i18n, after view init loader
* remove projectid from grant remove
* fix iam race condition
* refresh table ts, fix no permission project search
* change membership colors
* refresh table everywhere, replace assets, routing
* fix logo header size
* lint, fix project grant removal
* timestmp for p mem, user list, grants, p list (#615)
* npm audit
* update deps, resolve vulnerability
* fix tslint config
* update lock
* load 20 changes at once
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* Update console/src/assets/i18n/en.json
Co-authored-by: Florian Forster <florian@caos.ch>
* membership i18n
Co-authored-by: Florian Forster <florian@caos.ch>
2020-08-24 08:48:47 +02:00
|
|
|
<mat-label>{{ 'ROLESLABEL' | translate }}</mat-label>
|
2020-07-30 16:54:15 +02:00
|
|
|
<mat-select [(ngModel)]="member.rolesList" multiple
|
|
|
|
|
[disabled]="([('project.member.write:' + project.projectId), 'project.member.write'] | hasRole | async) == false"
|
|
|
|
|
(selectionChange)="updateRoles(member, $event)">
|
|
|
|
|
<mat-option *ngFor="let role of memberRoleOptions" [value]="role">
|
feat(console): user memberships, generic member create dialog, fix user autocomplete emitter (#606)
* load manager mgmtservice, user service
* add org memberships
* membership component, generic member creation
* refactor member create dialog
* project autocomplete context
* create batch managers in user component
* project context wrapper
* emit on user removal, preselect user on init
* membership avatar style, service
* auth user memberships, navigate to target
* cursor fix, avatar gen
* lint
* i18n fix
* remove role translations
* membership detail page, i18n
* fix role label i18n, after view init loader
* remove projectid from grant remove
* fix iam race condition
* refresh table ts, fix no permission project search
* change membership colors
* refresh table everywhere, replace assets, routing
* fix logo header size
* lint, fix project grant removal
* timestmp for p mem, user list, grants, p list (#615)
* npm audit
* update deps, resolve vulnerability
* fix tslint config
* update lock
* load 20 changes at once
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* Update console/src/assets/i18n/de.json
Co-authored-by: Florian Forster <florian@caos.ch>
* Update console/src/assets/i18n/en.json
Co-authored-by: Florian Forster <florian@caos.ch>
* membership i18n
Co-authored-by: Florian Forster <florian@caos.ch>
2020-08-24 08:48:47 +02:00
|
|
|
{{ role }}
|
2020-07-30 16:54:15 +02:00
|
|
|
</mat-option>
|
|
|
|
|
</mat-select>
|
|
|
|
|
</mat-form-field>
|
|
|
|
|
</td>
|
|
|
|
|
</ng-container>
|
2020-05-13 14:41:43 +02:00
|
|
|
|
2020-07-30 16:54:15 +02:00
|
|
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
|
|
|
|
<tr class="data-row" mat-row *matRowDef="let row; columns: displayedColumns;">
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
2020-05-13 14:41:43 +02:00
|
|
|
|
feat(console): identity providers and login policies (#722)
* idp list, idp create route
* idp modules, lazy import, i18n, routing
* generic service, i18n
* seperate lockout, age policy component
* seperate component modules
* routing
* enum class
* login policy
* iam policy grid
* login policy providers
* idps login policy
* add idp dialog component
* add idp to loginpolicy
* delete idp config, iam policy grid
* remove idp from loginpolicy
* idp detail component, generic idp create
* lint
* idp detail clientid-secrets, issuer, scopes
* hide clientsecret on update
* rm background style, idp config
* app tooltip fix
* lint
* dont refresh on idp select
* Update console/src/app/modules/idp-create/idp-create.component.html
Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com>
Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com>
2020-09-17 10:22:41 +02:00
|
|
|
<mat-paginator *ngIf="dataSource" class="paginator" #paginator [pageSize]="INITIALPAGESIZE"
|
2020-07-30 16:54:15 +02:00
|
|
|
[length]="dataSource.totalResult" [pageSizeOptions]="[25, 50, 100, 250]" (page)="changePage($event)">
|
|
|
|
|
</mat-paginator>
|
|
|
|
|
</div>
|
|
|
|
|
</app-refresh-table>
|
|
|
|
|
</app-detail-layout>
|