grafana/public/app/features/profile/ProfileCtrl.ts
Tobias Skarhed 0ef4060b98
Chore: Fix about 200 noImplicitAny errors (#18067)
* Fix 200 ish errors

* Add interface
2019-07-16 11:35:42 +02:00

122 lines
3.1 KiB
TypeScript

import config from 'app/core/config';
import { coreModule, NavModelSrv } from 'app/core/core';
import { dateTime } from '@grafana/data';
import { UserSession } from 'app/types';
import { BackendSrv } from 'app/core/services/backend_srv';
import { ILocationService } from 'angular';
export class ProfileCtrl {
user: any;
oldTheme: any;
teams: any = [];
orgs: any = [];
sessions: object[] = [];
userForm: any;
showTeamsList = false;
showOrgsList = false;
readonlyLoginFields = config.disableLoginForm;
navModel: any;
/** @ngInject */
constructor(
private backendSrv: BackendSrv,
private contextSrv: any,
private $location: ILocationService,
navModelSrv: NavModelSrv
) {
this.getUser();
this.getUserSessions();
this.getUserTeams();
this.getUserOrgs();
this.navModel = navModelSrv.getNav('profile', 'profile-settings', 0);
}
getUser() {
this.backendSrv.get('/api/user').then((user: any) => {
this.user = user;
this.user.theme = user.theme || 'dark';
});
}
getUserSessions() {
this.backendSrv.get('/api/user/auth-tokens').then((sessions: UserSession[]) => {
sessions.reverse();
const found = sessions.findIndex((session: UserSession) => {
return session.isActive;
});
if (found) {
const now = sessions[found];
sessions.splice(found, found);
sessions.unshift(now);
}
this.sessions = sessions.map((session: UserSession) => {
return {
id: session.id,
isActive: session.isActive,
seenAt: dateTime(session.seenAt).fromNow(),
createdAt: dateTime(session.createdAt).format('MMMM DD, YYYY'),
clientIp: session.clientIp,
browser: session.browser,
browserVersion: session.browserVersion,
os: session.os,
osVersion: session.osVersion,
device: session.device,
};
});
});
}
revokeUserSession(tokenId: number) {
this.backendSrv
.post('/api/user/revoke-auth-token', {
authTokenId: tokenId,
})
.then(() => {
this.sessions = this.sessions.filter((session: UserSession) => {
if (session.id === tokenId) {
return false;
}
return true;
});
});
}
getUserTeams() {
this.backendSrv.get('/api/user/teams').then((teams: any) => {
this.teams = teams;
this.showTeamsList = this.teams.length > 0;
});
}
getUserOrgs() {
this.backendSrv.get('/api/user/orgs').then((orgs: any) => {
this.orgs = orgs;
this.showOrgsList = orgs.length > 1;
});
}
setUsingOrg(org: any) {
this.backendSrv.post('/api/user/using/' + org.orgId).then(() => {
window.location.href = config.appSubUrl + '/profile';
});
}
update() {
if (!this.userForm.$valid) {
return;
}
this.backendSrv.put('/api/user/', this.user).then(() => {
this.contextSrv.user.name = this.user.name || this.user.login;
if (this.oldTheme !== this.user.theme) {
window.location.href = config.appSubUrl + this.$location.path();
}
});
}
}
coreModule.controller('ProfileCtrl', ProfileCtrl);