mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: dashboard asks for token
parent
954e5ff8f8
commit
24d11f259d
|
@ -107,18 +107,18 @@ export class DashboardComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
dialogRef.afterClosed().subscribe(secret => {
|
dialogRef.afterClosed().subscribe(secret => {
|
||||||
if (secret) {
|
if (secret) {
|
||||||
if (!this.openviduPublicUrl) {
|
this.restService.getOpenViduToken(secret)
|
||||||
this.restService.getOpenViduPublicUrl()
|
.then((token => {
|
||||||
.then((url => {
|
this.connectToSession(token);
|
||||||
this.openviduPublicUrl = url.replace('https://', 'wss://').replace('http://', 'ws://');
|
|
||||||
this.connectToSession(this.openviduPublicUrl + '?sessionId=testSession&secret=' + secret);
|
|
||||||
}))
|
}))
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
console.error(error);
|
if (error === 401) { // User unauthorized error. OpenVidu security is active
|
||||||
});
|
this.testVideo();
|
||||||
} else {
|
} else {
|
||||||
this.connectToSession(this.openviduPublicUrl + '?sessionId=testSession&secret=' + secret);
|
console.error(error);
|
||||||
|
this.msgChain.push('Error connecting to session: ' + error);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -181,21 +181,7 @@ export class DashboardComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
if (error.code === 401) { // User unauthorized error. OpenVidu security is active
|
this.msgChain.push('Error connecting to session: ' + error);
|
||||||
this.endTestVideo();
|
|
||||||
let dialogRef: MatDialogRef<CredentialsDialogComponent>;
|
|
||||||
dialogRef = this.dialog.open(CredentialsDialogComponent);
|
|
||||||
dialogRef.componentInstance.myReference = dialogRef;
|
|
||||||
|
|
||||||
dialogRef.afterClosed().subscribe(secret => {
|
|
||||||
if (secret) {
|
|
||||||
this.connectToSession(this.openviduPublicUrl + '?sessionId=testSession&secret=' + secret);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
console.error(error);
|
|
||||||
this.msgChain.push('Error connecting to session');
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { Subject } from 'rxjs';
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class RestService {
|
export class RestService {
|
||||||
|
@ -31,4 +30,57 @@ export class RestService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getOpenViduToken(secret: string): Promise<string> {
|
||||||
|
if (!this.openviduPublicUrl) {
|
||||||
|
this.getOpenViduPublicUrl().then(() => {
|
||||||
|
return this.getOpenViduToken(secret);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const url1 = 'https://OPENVIDUAPP:' + secret + '@' + this.openviduPublicUrl.split('://')[1] + 'api/sessions';
|
||||||
|
const http1 = new XMLHttpRequest();
|
||||||
|
const data1 = {};
|
||||||
|
data1['mediaMode'] = 'ROUTED';
|
||||||
|
data1['recordingMode'] = 'MANUAL';
|
||||||
|
data1['RECORDING_LAYOUT'] = 'BEST_FIT';
|
||||||
|
const json1 = JSON.stringify(data1);
|
||||||
|
|
||||||
|
http1.onreadystatechange = () => {
|
||||||
|
if (http1.status === 401) {
|
||||||
|
reject(401);
|
||||||
|
} else if (http1.readyState === 4) {
|
||||||
|
if (http1.status === 200) {
|
||||||
|
const sessionId = JSON.parse(http1.responseText).id;
|
||||||
|
|
||||||
|
const url2 = this.openviduPublicUrl + 'api/tokens';
|
||||||
|
const http2 = new XMLHttpRequest();
|
||||||
|
const data2 = {};
|
||||||
|
data2['session'] = sessionId;
|
||||||
|
const json2 = JSON.stringify(data2);
|
||||||
|
|
||||||
|
http2.onreadystatechange = () => {
|
||||||
|
if (http2.readyState === 4) {
|
||||||
|
if (http2.status === 200) {
|
||||||
|
resolve(JSON.parse(http2.responseText).id);
|
||||||
|
} else {
|
||||||
|
reject(http2.status);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
http2.open('POST', url2, true);
|
||||||
|
http2.setRequestHeader('Content-type', 'application/json');
|
||||||
|
http2.setRequestHeader('Authorization', 'Basic ' + btoa('OPENVIDUAPP:' + secret));
|
||||||
|
http2.send(json2);
|
||||||
|
} else {
|
||||||
|
reject(http1.status);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
http1.open('POST', url1, true);
|
||||||
|
http1.setRequestHeader('Content-type', 'application/json');
|
||||||
|
http1.send(json1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue