15 changed files with 331 additions and 13 deletions
@ -0,0 +1,35 @@ |
|||
/* |
|||
* Copyright © 2016-2017 The Thingsboard Authors |
|||
* |
|||
* Licensed 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. |
|||
*/ |
|||
|
|||
/*@ngInject*/ |
|||
export default function ActivationLinkDialogController($mdDialog, $translate, toast, activationLink) { |
|||
|
|||
var vm = this; |
|||
|
|||
vm.activationLink = activationLink; |
|||
|
|||
vm.onActivationLinkCopied = onActivationLinkCopied; |
|||
vm.close = close; |
|||
|
|||
function onActivationLinkCopied(){ |
|||
toast.showSuccess($translate.instant('user.activation-link-copied-message'), 750, angular.element('#activation-link-dialog-content'), 'bottom left'); |
|||
} |
|||
|
|||
function close() { |
|||
$mdDialog.hide(); |
|||
} |
|||
|
|||
} |
|||
@ -0,0 +1,55 @@ |
|||
<!-- |
|||
|
|||
Copyright © 2016-2017 The Thingsboard Authors |
|||
|
|||
Licensed 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. |
|||
|
|||
--> |
|||
<md-dialog aria-label="{{ 'user.activation-link' | translate }}" style="min-width: 400px;"> |
|||
<form> |
|||
<md-toolbar> |
|||
<div class="md-toolbar-tools"> |
|||
<h2 translate="user.activation-link"></h2> |
|||
<span flex></span> |
|||
<md-button class="md-icon-button" ng-click="vm.close()"> |
|||
<ng-md-icon icon="close" aria-label="{{ 'dialog.close' | translate }}"></ng-md-icon> |
|||
</md-button> |
|||
</div> |
|||
</md-toolbar> |
|||
<md-dialog-content> |
|||
<div id="activation-link-dialog-content" class="md-dialog-content"> |
|||
<md-content class="md-padding" layout="column"> |
|||
<span translate="user.activation-link-text" translate-values="{activationLink: vm.activationLink}"></span> |
|||
<div layout="row" layout-align="start center"> |
|||
<pre class="tb-highlight" flex><code>{{ vm.activationLink }}</code></pre> |
|||
<md-button class="md-icon-button" |
|||
ngclipboard |
|||
data-clipboard-text="{{ vm.activationLink }}" |
|||
ngclipboard-success="vm.onActivationLinkCopied(e)"> |
|||
<md-icon md-svg-icon="mdi:clipboard-arrow-left"></md-icon> |
|||
<md-tooltip md-direction="top"> |
|||
{{ 'user.copy-activation-link' | translate }} |
|||
</md-tooltip> |
|||
</md-button> |
|||
</div> |
|||
</md-content> |
|||
</div> |
|||
</md-dialog-content> |
|||
<md-dialog-actions layout="row"> |
|||
<span flex></span> |
|||
<md-button ng-click="vm.close()">{{ 'action.ok' | |
|||
translate }} |
|||
</md-button> |
|||
</md-dialog-actions> |
|||
</form> |
|||
</md-dialog> |
|||
@ -0,0 +1,112 @@ |
|||
/* |
|||
* Copyright © 2016-2017 The Thingsboard Authors |
|||
* |
|||
* Licensed 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. |
|||
*/ |
|||
|
|||
/* eslint-disable import/no-unresolved, import/default */ |
|||
|
|||
import activationLinkDialogTemplate from './activation-link.dialog.tpl.html'; |
|||
|
|||
/* eslint-enable import/no-unresolved, import/default */ |
|||
|
|||
|
|||
/*@ngInject*/ |
|||
export default function AddUserController($scope, $mdDialog, $state, $stateParams, $document, $q, types, userService, saveItemFunction, helpLinks) { |
|||
|
|||
var vm = this; |
|||
|
|||
var tenantId = $stateParams.tenantId; |
|||
var customerId = $stateParams.customerId; |
|||
var usersType = $state.$current.data.usersType; |
|||
|
|||
vm.helpLinks = helpLinks; |
|||
vm.item = {}; |
|||
|
|||
vm.activationMethods = [ |
|||
{ |
|||
value: 'displayActivationLink', |
|||
name: 'user.display-activation-link' |
|||
}, |
|||
{ |
|||
value: 'sendActivationMail', |
|||
name: 'user.send-activation-mail' |
|||
} |
|||
]; |
|||
|
|||
vm.userActivationMethod = 'displayActivationLink'; |
|||
|
|||
vm.add = add; |
|||
vm.cancel = cancel; |
|||
|
|||
function cancel() { |
|||
$mdDialog.cancel(); |
|||
} |
|||
|
|||
function add($event) { |
|||
var sendActivationMail = false; |
|||
if (vm.userActivationMethod == 'sendActivationMail') { |
|||
sendActivationMail = true; |
|||
} |
|||
if (usersType === 'tenant') { |
|||
vm.item.authority = "TENANT_ADMIN"; |
|||
vm.item.tenantId = { |
|||
entityType: types.entityType.tenant, |
|||
id: tenantId |
|||
}; |
|||
} else if (usersType === 'customer') { |
|||
vm.item.authority = "CUSTOMER_USER"; |
|||
vm.item.customerId = { |
|||
entityType: types.entityType.customer, |
|||
id: customerId |
|||
}; |
|||
} |
|||
userService.saveUser(vm.item, sendActivationMail).then(function success(item) { |
|||
vm.item = item; |
|||
$scope.theForm.$setPristine(); |
|||
if (vm.userActivationMethod == 'displayActivationLink') { |
|||
userService.getActivationLink(vm.item.id.id).then( |
|||
function success(activationLink) { |
|||
displayActivationLink($event, activationLink).then( |
|||
function() { |
|||
$mdDialog.hide(); |
|||
} |
|||
); |
|||
} |
|||
); |
|||
} else { |
|||
$mdDialog.hide(); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
function displayActivationLink($event, activationLink) { |
|||
var deferred = $q.defer(); |
|||
$mdDialog.show({ |
|||
controller: 'ActivationLinkDialogController', |
|||
controllerAs: 'vm', |
|||
templateUrl: activationLinkDialogTemplate, |
|||
locals: { |
|||
activationLink: activationLink |
|||
}, |
|||
parent: angular.element($document[0].body), |
|||
fullscreen: true, |
|||
skipHide: true, |
|||
targetEvent: $event |
|||
}).then(function () { |
|||
deferred.resolve(); |
|||
}); |
|||
return deferred.promise; |
|||
} |
|||
|
|||
} |
|||
Loading…
Reference in new issue