mirror of
https://github.com/nextcloud/passman.git
synced 2025-10-08 20:46:12 +08:00
Delete users from share list
This commit is contained in:
parent
a8ce34b29b
commit
e7bf4f8533
9 changed files with 79 additions and 7 deletions
|
@ -60,6 +60,7 @@ return [
|
|||
['name' => 'share#createPublicShare', 'url' => '/api/v2/sharing/public', 'verb' => 'POST'],
|
||||
['name' => 'share#getPublicCredentialData', 'url' => '/api/v2/sharing/credential/{credential_guid}/public', 'verb' => 'GET'],
|
||||
['name' => 'share#unshareCredential', 'url' => '/api/v2/sharing/credential/{item_guid}', 'verb' => 'DELETE'],
|
||||
['name' => 'share#unshareCredentialFromUser', 'url' => '/api/v2/sharing/credential/{item_guid}/{user_id}', 'verb' => 'DELETE'],
|
||||
['name' => 'share#getRevisions', 'url' => '/api/v2/sharing/credential/{item_guid}/revisions', 'verb' => 'GET'],
|
||||
['name' => 'share#getItemAcl', 'url' => '/api/v2/sharing/credential/{item_guid}/acl', 'verb' => 'GET'],
|
||||
['name' => 'share#getFile', 'url' => '/api/v2/sharing/credential/{item_guid}/file/{file_guid}', 'verb' => 'GET'],
|
||||
|
|
|
@ -219,10 +219,48 @@ class ShareController extends ApiController {
|
|||
}
|
||||
foreach ($request_list as $request) {
|
||||
$this->shareService->deleteShareRequest($request);
|
||||
$manager = \OC::$server->getNotificationManager();
|
||||
$notification = $manager->createNotification();
|
||||
$notification->setApp('passman')
|
||||
->setObject('passman_share_request', $request->getId())
|
||||
->setUser($request->getTargetUserId());
|
||||
$manager->markProcessed($notification);
|
||||
}
|
||||
return new JSONResponse(array('result' => true));
|
||||
}
|
||||
|
||||
|
||||
public function unshareCredentialFromUser($item_guid, $user_id){
|
||||
$acl = null;
|
||||
$sr = null;
|
||||
try {
|
||||
$acl = $this->shareService->getCredentialAclForUser($user_id, $item_guid);
|
||||
} catch (DoesNotExistException $e){
|
||||
|
||||
}
|
||||
try{
|
||||
$sr = array_pop($this->shareService->getPendingShareRequestsForCredential($item_guid, $user_id));
|
||||
} catch (DoesNotExistException $e){
|
||||
|
||||
}
|
||||
|
||||
if($sr){
|
||||
$this->shareService->cleanItemRequestsForUser($sr);
|
||||
}
|
||||
if($acl){
|
||||
$this->shareService->deleteShareACL($acl);
|
||||
}
|
||||
|
||||
$manager = \OC::$server->getNotificationManager();
|
||||
$notification = $manager->createNotification();
|
||||
$notification->setApp('passman')
|
||||
->setObject('passman_share_request', $sr->getId())
|
||||
->setUser($user_id);
|
||||
$manager->markProcessed($notification);
|
||||
|
||||
return new JSONResponse(array('result' => true));
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
*/
|
||||
|
|
|
@ -492,6 +492,11 @@
|
|||
.table {
|
||||
width: 100%; }
|
||||
|
||||
.shared_table .fa-trash {
|
||||
cursor: pointer; }
|
||||
.shared_table .fa-trash:hover {
|
||||
color: #ce3702; }
|
||||
|
||||
.scan-result-table {
|
||||
margin-top: 10px; }
|
||||
.scan-result-table .score {
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -177,6 +177,15 @@ angular.module('passmanApp')
|
|||
}
|
||||
};
|
||||
|
||||
$scope.unshareUser = function(user){
|
||||
ShareService.unshareCredentialFromUser($scope.storedCredential, user.userId).then(function (result) {
|
||||
if(result.result === true){
|
||||
var idx = $scope.share_settings.credentialSharedWithUserAndGroup.indexOf(user);
|
||||
$scope.share_settings.credentialSharedWithUserAndGroup.splice(idx, 1);
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
$scope.unshareCredential = function (credential) {
|
||||
ShareService.unshareCredential(credential);
|
||||
var _credential = angular.copy(credential);
|
||||
|
|
|
@ -80,6 +80,13 @@ angular.module('passmanApp')
|
|||
})
|
||||
},
|
||||
|
||||
unshareCredentialFromUser: function (credential, user_id) {
|
||||
var queryUrl = OC.generateUrl('apps/passman/api/v2/sharing/credential/' + credential.guid +'/'+ user_id);
|
||||
return $http.delete(queryUrl).then(function (response) {
|
||||
return response.data;
|
||||
})
|
||||
},
|
||||
|
||||
createPublicSharedCredential: function (shareObj) {
|
||||
var queryUrl = OC.generateUrl('apps/passman/api/v2/sharing/public');
|
||||
return $http.post(queryUrl, shareObj).then(function (response) {
|
||||
|
|
|
@ -81,7 +81,7 @@ angular.module('views/partials/forms/settings/tool.html', []).run(['$templateCac
|
|||
angular.module('views/partials/forms/share_credential/basics.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/share_credential/basics.html',
|
||||
'<div class="row"><div class="col-xs-12 col-md-6"><div><table class="table sharing_table"><thead><tr><td><tags-input ng-model="inputSharedWith" replace-spaces-with-dashes="false" add-from-autocomplete-only="true" placeholder="Search users or groups..."><auto-complete source="searchUsers($query)" min-length="0" template="autocomplete-template"></auto-complete></tags-input></td><td><button class="button" ng-click="shareWith(inputSharedWith, selectedAccessLevel)">+</button></td></tr></thead></table><div ng-if="share_settings.cypher_progress.done > 0">Cyphering...<div progress-bar="share_settings.cypher_progress.percent" index="share_settings.cypher_progress.done" total="share_settings.cypher_progress.total"></div></div><div ng-if="share_settings.upload_progress.done > 0">Uploading...<div progress-bar="share_settings.upload_progress.percent" index="share_settings.upload_progress.done" total="share_settings.upload_progress.total"></div></div></div></div><div class="col-xs-12 col-md-6"><table class="table"><thead><tr><td>User</td><td>Crypto time</td></tr></thead><tr ng-repeat="user in share_settings.cypher_progress.times"><td><i class="fa fa-user"></i> {{user.user}}</td><td>{{user.time}} s</td></tr></table>Total time spent cyphering: {{ calculate_total_time() }}</div></div><div class="row"><div class="col-xs-12 col-md-6"><table class="table shared_table" ng-show="share_settings.credentialSharedWithUserAndGroup.length > 0"><thead><tr><td>User</td><td>Read</td><td>Write</td><td>Files</td><td>Revisions</td></tr></thead><tr ng-repeat="user in share_settings.credentialSharedWithUserAndGroup"><td><i class="fa fa-user" ng-if="user.type === \'user\'"></i> <i class="fa fa-group" ng-if="user.type === \'group\'"></i> {{user.userId}}</td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.READ)" ng-checked="hasPermission(user.acl, default_permissions.permissions.READ)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.WRITE)" ng-checked="hasPermission(user.acl, default_permissions.permissions.WRITE)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.FILES)" ng-checked="hasPermission(user.acl, default_permissions.permissions.FILES)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.HISTORY)" ng-checked="hasPermission(user.acl, default_permissions.permissions.HISTORY)"></td></tr></table></div></div><script type="text/ng-template" id="autocomplete-template"><i class="fa fa-user" ng-if="data.type === \'user\'"></i>\n' +
|
||||
'<div class="row"><div class="col-xs-12 col-md-6"><div><table class="table sharing_table"><thead><tr><td><tags-input ng-model="inputSharedWith" replace-spaces-with-dashes="false" add-from-autocomplete-only="true" placeholder="Search users or groups..."><auto-complete source="searchUsers($query)" min-length="0" template="autocomplete-template"></auto-complete></tags-input></td><td><button class="button" ng-click="shareWith(inputSharedWith, selectedAccessLevel)">+</button></td></tr></thead></table><div ng-if="share_settings.cypher_progress.done > 0">Cyphering...<div progress-bar="share_settings.cypher_progress.percent" index="share_settings.cypher_progress.done" total="share_settings.cypher_progress.total"></div></div><div ng-if="share_settings.upload_progress.done > 0">Uploading...<div progress-bar="share_settings.upload_progress.percent" index="share_settings.upload_progress.done" total="share_settings.upload_progress.total"></div></div></div></div><div class="col-xs-12 col-md-6"><table class="table"><thead><tr><td>User</td><td>Crypto time</td></tr></thead><tr ng-repeat="user in share_settings.cypher_progress.times"><td><i class="fa fa-user"></i> {{user.user}}</td><td>{{user.time}} s</td></tr></table>Total time spent cyphering: {{ calculate_total_time() }}</div></div><div class="row"><div class="col-xs-12 col-md-6"><table class="table shared_table" ng-show="share_settings.credentialSharedWithUserAndGroup.length > 0"><thead><tr><td>User</td><td>Read</td><td>Write</td><td>Files</td><td>Revisions</td><td></td></tr></thead><tr ng-repeat="user in share_settings.credentialSharedWithUserAndGroup"><td><i class="fa fa-user" ng-if="user.type === \'user\'"></i> <i class="fa fa-group" ng-if="user.type === \'group\'"></i> {{user.userId}}</td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.READ)" ng-checked="hasPermission(user.acl, default_permissions.permissions.READ)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.WRITE)" ng-checked="hasPermission(user.acl, default_permissions.permissions.WRITE)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.FILES)" ng-checked="hasPermission(user.acl, default_permissions.permissions.FILES)"></td><td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.HISTORY)" ng-checked="hasPermission(user.acl, default_permissions.permissions.HISTORY)"></td><td><i class="fa fa-trash" ng-click="unshareUser(user)"></i></td></tr></table></div></div><script type="text/ng-template" id="autocomplete-template"><i class="fa fa-user" ng-if="data.type === \'user\'"></i>\n' +
|
||||
' <i class="fa fa-group" ng-if="data.type === \'group\'"></i>\n' +
|
||||
' {{data.text}}</script>');
|
||||
}]);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
.sharing_table{
|
||||
td:first-child{
|
||||
.sharing_table {
|
||||
td:first-child {
|
||||
width: 55%;
|
||||
tags-input{
|
||||
tags-input {
|
||||
.tags {
|
||||
width: 100%;
|
||||
input {
|
||||
|
@ -9,11 +9,21 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
.autocomplete{
|
||||
.autocomplete {
|
||||
margin-top: 35px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.table{
|
||||
|
||||
.table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.shared_table {
|
||||
.fa-trash {
|
||||
cursor: pointer;
|
||||
}
|
||||
.fa-trash:hover {
|
||||
color: #ce3702;
|
||||
}
|
||||
}
|
|
@ -65,6 +65,7 @@
|
|||
<td>Write</td>
|
||||
<td>Files</td>
|
||||
<td>Revisions</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr ng-repeat="user in share_settings.credentialSharedWithUserAndGroup">
|
||||
|
@ -77,6 +78,7 @@
|
|||
<td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.WRITE)" ng-checked="hasPermission(user.acl, default_permissions.permissions.WRITE)"></td>
|
||||
<td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.FILES)" ng-checked="hasPermission(user.acl, default_permissions.permissions.FILES)"></td>
|
||||
<td><input type="checkbox" ng-click="setPermission(user.acl, default_permissions.permissions.HISTORY)" ng-checked="hasPermission(user.acl, default_permissions.permissions.HISTORY)"></td>
|
||||
<td><i class="fa fa-trash" ng-click="unshareUser(user)"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Reference in a new issue