blob: 0a3b3edc25ff031942b57de94ecaa6d359808e7d [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
import { Component, OnInit } from '@angular/core';
import { BasicProfileSettings } from '../basic-profile-settings';
import { RawUserApiToken, UserApiToken } from '@streampipes/platform-services';
import { MatTableDataSource } from '@angular/material/table';
import { FormControl, Validators } from '@angular/forms';
@Component({
selector: 'sp-token-management-settings',
templateUrl: './token-management-settings.component.html',
styleUrls: ['./token-management-settings.component.scss'],
standalone: false,
})
export class TokenManagementSettingsComponent
extends BasicProfileSettings
implements OnInit
{
newTokenName: string;
newTokenCreated = false;
newlyCreatedToken: RawUserApiToken;
tokenNameFormControl = new FormControl('', [
Validators.required,
Validators.minLength(3),
Validators.pattern(/^[a-zA-Z0-9_-]+$/),
]);
displayedColumns: string[] = ['name', 'action'];
apiKeyDataSource: MatTableDataSource<UserApiToken>;
ngOnInit(): void {
this.receiveUserData();
}
requestNewKey() {
const baseToken: RawUserApiToken = this.makeBaseToken();
this.profileService
.requestNewApiToken(this.userData.username, baseToken)
.subscribe(result => {
this.newlyCreatedToken = result;
this.newTokenCreated = true;
this.newTokenName = '';
this.tokenNameFormControl.reset();
this.receiveUserData();
});
}
makeBaseToken(): RawUserApiToken {
const baseToken = new RawUserApiToken();
baseToken.tokenName = this.newTokenName;
return baseToken;
}
revokeApiKey(apiKey: UserApiToken) {
const removeIndex = this.userData.userApiTokens
.map(token => token.tokenId)
.indexOf(apiKey.tokenId);
this.userData.userApiTokens.splice(removeIndex, 1);
this.profileService
.updateUserProfile(this.userData)
.subscribe(response => {
this.receiveUserData();
});
}
onUserDataReceived() {
this.apiKeyDataSource = new MatTableDataSource<UserApiToken>(
this.userData.userApiTokens,
);
}
}