import config from "app/core/config"; import coreModule from "app/core/core_module"; import Remarkable from "remarkable"; import _ from "lodash"; export class OrgUsersCtrl { unfiltered: any; users: any; pendingInvites: any; editor: any; navModel: any; externalUserMngLinkUrl: string; externalUserMngLinkName: string; externalUserMngInfo: string; canInvite: boolean; searchQuery: string; showInvites: boolean; /** @ngInject */ constructor(private $scope, private backendSrv, navModelSrv, $sce) { this.navModel = navModelSrv.getNav("cfg", "users", 0); this.get(); this.externalUserMngLinkUrl = config.externalUserMngLinkUrl; this.externalUserMngLinkName = config.externalUserMngLinkName; this.canInvite = !config.disableLoginForm && !config.externalUserMngLinkName; // render external user management info markdown if (config.externalUserMngInfo) { this.externalUserMngInfo = new Remarkable({ linkTarget: "__blank" }).render(config.externalUserMngInfo); } } get() { this.backendSrv.get("/api/org/users").then(users => { this.users = users; this.unfiltered = users; }); this.backendSrv.get("/api/org/invites").then(pendingInvites => { this.pendingInvites = pendingInvites; }); } onQueryUpdated() { let regex = new RegExp(this.searchQuery, "ig"); this.users = _.filter(this.unfiltered, item => { return regex.test(item.email) || regex.test(item.login); }); } updateOrgUser(user) { this.backendSrv.patch("/api/org/users/" + user.userId, user); } removeUser(user) { this.$scope.appEvent("confirm-modal", { title: "Delete", text: "Are you sure you want to delete user " + user.login + "?", yesText: "Delete", icon: "fa-warning", onConfirm: () => { this.removeUserConfirmed(user); } }); } removeUserConfirmed(user) { this.backendSrv .delete("/api/org/users/" + user.userId) .then(this.get.bind(this)); } revokeInvite(invite, evt) { evt.stopPropagation(); this.backendSrv .patch("/api/org/invites/" + invite.code + "/revoke") .then(this.get.bind(this)); } copyInviteToClipboard(evt) { evt.stopPropagation(); } getInviteUrl(invite) { return invite.url; } } coreModule.controller("OrgUsersCtrl", OrgUsersCtrl);