Add restriction for repositories and tags.

This commit is contained in:
kunw 2017-03-23 15:48:45 +08:00
parent 01d9930b5a
commit 801a83ffd5
4 changed files with 35 additions and 4 deletions

View File

@ -3,7 +3,7 @@
<clr-dg-column>{{'REPOSITORY.TAGS_COUNT' | translate}}</clr-dg-column>
<clr-dg-column>{{'REPOSITORY.PULL_COUNT' | translate}}</clr-dg-column>
<clr-dg-row *ngFor="let r of repositories" [clrDgItem]='r'>
<clr-dg-action-overflow *ngIf="listFullMode">
<clr-dg-action-overflow *ngIf="listFullMode && hasProjectAdminRole">
<button class="action-item">{{'REPOSITORY.COPY_ID' | translate}}</button>
<button class="action-item">{{'REPOSITORY.COPY_PARENT_ID' | translate}}</button>
<button class="action-item" (click)="deleteRepo(r.name)">{{'REPOSITORY.DELETE' | translate}}</button>

View File

@ -7,6 +7,9 @@ import { SearchTriggerService } from '../../base/global-search/search-trigger.se
import { SessionService } from '../../shared/session.service';
import { ListMode } from '../../shared/shared.const';
import { SessionUser } from '../../shared/session-user';
import { Member } from '../../project/member/member';
@Component({
selector: 'list-repository',
templateUrl: 'list-repository.component.html'
@ -25,10 +28,22 @@ export class ListRepositoryComponent {
pageOffset: number = 1;
hasProjectAdminRole: boolean;
constructor(
private router: Router,
private searchTrigger: SearchTriggerService,
private session: SessionService) { }
private session: SessionService) {
//Get current user from registered resolver.
let currentUser = session.getCurrentUser();
let projectMembers: Member[] = session.getProjectMembers();
if(currentUser && projectMembers) {
let currentMember = projectMembers.find(m=>m.user_id === currentUser.user_id);
if(currentMember) {
this.hasProjectAdminRole = (currentMember.role_name === 'projectAdmin');
}
}
}
deleteRepo(repoName: string) {
this.delete.emit(repoName);

View File

@ -10,7 +10,7 @@
<clr-dg-column>{{'REPOSITORY.ARCHITECTURE' | translate}}</clr-dg-column>
<clr-dg-column>{{'REPOSITORY.OS' | translate}}</clr-dg-column>
<clr-dg-row *ngFor="let t of tags" [clrDgItem]='t'>
<clr-dg-action-overflow>
<clr-dg-action-overflow *ngIf="hasProjectAdminRole">
<button class="action-item" (click)="deleteTag(t)">{{'REPOSITORY.DELETE' | translate}}</button>
</clr-dg-action-overflow>
<clr-dg-cell>{{t.tag}}</clr-dg-cell>

View File

@ -15,6 +15,9 @@ import { TagView } from '../tag-view';
import { AppConfigService } from '../../app-config.service';
import { SessionService } from '../../shared/session.service';
import { Member } from '../../project/member/member';
@Component({
moduleId: module.id,
selector: 'tag-repository',
@ -26,6 +29,8 @@ export class TagRepositoryComponent implements OnInit, OnDestroy {
projectId: number;
repoName: string;
hasProjectAdminRole: boolean;
tags: TagView[];
registryUrl: string;
withNotary: boolean;
@ -37,7 +42,18 @@ export class TagRepositoryComponent implements OnInit, OnDestroy {
private messageService: MessageService,
private deletionDialogService: ConfirmationDialogService,
private repositoryService: RepositoryService,
private appConfigService: AppConfigService) {
private appConfigService: AppConfigService,
private session: SessionService){
let currentUser = session.getCurrentUser();
let projectMembers: Member[] = session.getProjectMembers();
if(currentUser && projectMembers) {
let currentMember = projectMembers.find(m=>m.user_id === currentUser.user_id);
if(currentMember) {
this.hasProjectAdminRole = (currentMember.role_name === 'projectAdmin');
}
}
this.subscription = this.deletionDialogService.confirmationConfirm$.subscribe(
message => {
if (message &&