mirror of
https://github.com/nextcloud/passman.git
synced 2026-01-06 23:57:12 +08:00
Expire shared items after a certain date
This commit is contained in:
parent
d5d0676d6e
commit
5c9aac9495
6 changed files with 16 additions and 16 deletions
|
|
@ -285,7 +285,6 @@ class ShareController extends ApiController {
|
|||
->setObject('passman_share_request', $share_request_id)
|
||||
->setUser($this->userId->getUID());
|
||||
$manager->markProcessed($notification);
|
||||
//@TODO load other requests and delete them by item id.
|
||||
|
||||
$this->shareService->cleanItemRequestsForUser($sr);
|
||||
return new JSONResponse(array('result'=> true));
|
||||
|
|
@ -299,18 +298,22 @@ class ShareController extends ApiController {
|
|||
* @PublicPage
|
||||
*/
|
||||
public function getPublicCredentialData($credential_guid) {
|
||||
//@TODO if ExpireViews --, if 0 delete
|
||||
|
||||
//@TODO Check expire date
|
||||
$acl = $this->shareService->getACL(null, $credential_guid);
|
||||
$views = $acl->getExpireViews();
|
||||
if($views === 0){
|
||||
return new NotFoundResponse();
|
||||
} else {
|
||||
} else if($views != -1) {
|
||||
$views--;
|
||||
$acl->setExpireViews($views);
|
||||
$this->shareService->updateCredentialACL($acl);
|
||||
}
|
||||
|
||||
if($acl->getExpire() > 0 && time() > $acl->getExpire()){
|
||||
return new NotFoundResponse();
|
||||
}
|
||||
|
||||
try {
|
||||
$credential = $this->shareService->getSharedItem(null, $credential_guid);
|
||||
return new JSONResponse($credential);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
*/
|
||||
angular.module('passmanApp')
|
||||
.controller('ImportCtrl', ['$scope', '$window', 'CredentialService', 'VaultService', function ($scope, $window, CredentialService, VaultService) {
|
||||
//@TODo read the available importers from $window.PassmanImporter
|
||||
$scope.available_importers = [
|
||||
|
||||
];
|
||||
|
|
|
|||
|
|
@ -76,8 +76,8 @@ angular.module('passmanApp')
|
|||
linkSharing: {
|
||||
enabled: false,
|
||||
settings: {
|
||||
expire_time: 0,
|
||||
expire_views: 0,
|
||||
expire_time: new Date("2999-12-31T22:59:59"),
|
||||
expire_views: 5,
|
||||
acl: link_acl
|
||||
}
|
||||
},
|
||||
|
|
@ -99,10 +99,9 @@ angular.module('passmanApp')
|
|||
value: '1'
|
||||
}
|
||||
];
|
||||
console.log(SharingACL);
|
||||
var acl = new SharingACL(0);
|
||||
|
||||
console.log(acl);
|
||||
|
||||
$scope.inputSharedWith = [];
|
||||
$scope.selectedAccessLevel = '1';
|
||||
|
||||
|
|
@ -138,7 +137,6 @@ angular.module('passmanApp')
|
|||
|
||||
$scope.unshareCredential = function (credential) {
|
||||
ShareService.unshareCredential(credential);
|
||||
//@TODO check why an item locks up after being shared with only a link
|
||||
var _credential = angular.copy(credential);
|
||||
_credential.shared_key = null;
|
||||
CredentialService.updateCredential(_credential).then(function () {
|
||||
|
|
@ -154,7 +152,6 @@ angular.module('passmanApp')
|
|||
$scope.share_settings.cypher_progress.times_total = [];
|
||||
|
||||
ShareService.generateSharedKey(20).then(function (key) {
|
||||
console.log(key);
|
||||
|
||||
var encryptedSharedCredential = ShareService.encryptSharedCredential($scope.storedCredential, key);
|
||||
CredentialService.updateCredential(encryptedSharedCredential, true);
|
||||
|
|
@ -194,11 +191,12 @@ angular.module('passmanApp')
|
|||
}
|
||||
|
||||
if($scope.share_settings.linkSharing.enabled){
|
||||
var expire_time = new Date(angular.copy( $scope.share_settings.linkSharing.settings.expire_time)).getTime()/1000;
|
||||
var shareObj = {
|
||||
item_id: $scope.storedCredential.credential_id,
|
||||
item_guid: $scope.storedCredential.guid,
|
||||
permissions: $scope.share_settings.linkSharing.settings.acl.getAccessLevel(),
|
||||
expire_timestamp: $scope.share_settings.linkSharing.settings.expire_time,
|
||||
expire_timestamp: expire_time,
|
||||
expire_views: $scope.share_settings.linkSharing.settings.expire_views
|
||||
};
|
||||
ShareService.createPublicSharedCredential(shareObj).then(function(){
|
||||
|
|
@ -207,13 +205,13 @@ angular.module('passmanApp')
|
|||
|
||||
});
|
||||
}
|
||||
NotificationService.showNotification('Credential shared', 4000)
|
||||
})
|
||||
};
|
||||
|
||||
$scope.uploadChanges = function (user) {
|
||||
user.accessLevel = angular.copy(user.acl.getAccessLevel());
|
||||
ShareService.shareWithUser(storedCredential, user);
|
||||
//@TODO Encrypt the credential once all users have the sharing keys.
|
||||
};
|
||||
|
||||
$scope.calculate_total_time = function () {
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ angular.module('views/partials/forms/share_credential/basics.html', []).run(['$t
|
|||
angular.module('views/partials/forms/share_credential/link_sharing.html', []).run(['$templateCache', function($templateCache) {
|
||||
'use strict';
|
||||
$templateCache.put('views/partials/forms/share_credential/link_sharing.html',
|
||||
'<div class="row"><div class="col-xs-12 col-md-6"><input type="checkbox" ng-model="share_settings.linkSharing.enabled"> Enable link sharing.<br><input type="text" ng-model="share_link" select-on-click placeholder="Click share first!" ng-if="share_settings.linkSharing.enabled"><div ng-show="share_settings.linkSharing.enabled">Share until date <span datetime-picker ng-model="share_settings.linkSharing.settings.expire_time" class="link" future-only close-on-select="false">No expire date set</span></div><div ng-show="share_settings.linkSharing.enabled">Share until views <input type="number" ng-model="share_settings.linkSharing.settings.expire_views"></div><div ng-if="share_settings.linkSharing.enabled"><table><tr><td><input type="checkbox" ng-click="setPermission(share_settings.linkSharing.settings.acl, default_permissions.permissions.FILES)" ng-checked="hasPermission(share_settings.linkSharing.settings.acl, default_permissions.permissions.FILES)"></td><td>Show files</td></tr></table></div></div></div>');
|
||||
'<div class="row"><div class="col-xs-12 col-md-6"><input type="checkbox" ng-model="share_settings.linkSharing.enabled"> Enable link sharing.<br><input type="text" ng-model="share_link" select-on-click placeholder="Click share first!" ng-if="share_settings.linkSharing.enabled"><div ng-show="share_settings.linkSharing.enabled">Share until date <span datetime-picker ng-model="share_settings.linkSharing.settings.expire_time" class="link" future-only close-on-select="false" timestamp="true">{{ share_settings.linkSharing.settings.expire_time | date:\'dd-MM-yyyy @ HH:mm:ss\' }}</span></div><div ng-show="share_settings.linkSharing.enabled">Expire after views<br><input type="number" ng-model="share_settings.linkSharing.settings.expire_views"></div><div ng-if="share_settings.linkSharing.enabled"><table><tr><td><input type="checkbox" ng-click="setPermission(share_settings.linkSharing.settings.acl, default_permissions.permissions.FILES)" ng-checked="hasPermission(share_settings.linkSharing.settings.acl, default_permissions.permissions.FILES)"></td><td>Show files</td></tr></table></div></div></div>');
|
||||
}]);
|
||||
|
||||
angular.module('views/partials/password-meter.html', []).run(['$templateCache', function($templateCache) {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ class CronService {
|
|||
$this->db = $db;
|
||||
}
|
||||
//@TODO rename to a general name with sub tasks
|
||||
//@TODO Add cron task which expires shared credentials
|
||||
public function expireCredentials() {
|
||||
$this->logger->info('Passman cron test', array('app' => 'passman'));
|
||||
$expired_credentials = $this->credentialService->getExpiredCredentials($this->utils->getTime());
|
||||
|
|
|
|||
|
|
@ -11,11 +11,12 @@
|
|||
class="link"
|
||||
future-only
|
||||
close-on-select="false"
|
||||
> No expire date set</span>
|
||||
timestamp="true"
|
||||
>{{ share_settings.linkSharing.settings.expire_time | date:'dd-MM-yyyy @ HH:mm:ss' }}</span>
|
||||
|
||||
</div>
|
||||
<div ng-show="share_settings.linkSharing.enabled">
|
||||
Share until views
|
||||
Expire after views<br />
|
||||
<input type="number"
|
||||
ng-model="share_settings.linkSharing.settings.expire_views">
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue