Expire shared items after a certain date

This commit is contained in:
brantje 2016-10-04 14:15:34 +02:00
parent d5d0676d6e
commit 5c9aac9495
No known key found for this signature in database
GPG key ID: 5FF1D117F918687F
6 changed files with 16 additions and 16 deletions

View file

@ -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);

View file

@ -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 = [
];

View file

@ -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 () {

View file

@ -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) {

View file

@ -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());

View file

@ -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>