Updating almost works

This commit is contained in:
brantje 2016-10-03 21:36:39 +02:00
parent 8a218344c5
commit de27612a58
No known key found for this signature in database
GPG key ID: 5FF1D117F918687F
5 changed files with 16 additions and 11 deletions

View file

@ -102,10 +102,13 @@ class CredentialController extends ApiController {
$description, $email, $expire_time, $favicon, $files, $guid,
$hidden, $label, $otp, $password, $renew_interval,
$tags, $url, $username, $vault_id, $revision_created, $shared_key, $acl) {
$storedCredential = $this->credentialService->getCredentialById($credential_id, $this->userId);
$credential = array(
'credential_id' => $credential_id,
'guid' => $guid,
'user_id' => $this->userId,
'label' => $label,
'description' => $description,
'created' => $created,
@ -124,17 +127,18 @@ class CredentialController extends ApiController {
'delete_time' => $delete_time,
'hidden' => $hidden,
'otp' => $otp,
'shared_key' => (!empty($shared_key)) ? $shared_key : '',
'shared_key' => ($shared_key === null) ? null : $storedCredential->getSharedKey(),
);
$storedCredential = $this->credentialService->getCredentialById($credential_id, $this->userId);
if ($storedCredential->getUserId() !== $this->userId){
$acl = $this->sharingService->getCredentialAclForUser($this->userId, $storedCredential->getGuid());
if (!$acl->hasPermission(SharingACL::WRITE)){
return new DataResponse(['msg' => 'Not authorized'], Http::STATUS_UNAUTHORIZED);
}
}
//@TODO Add activities for non owned items
$link = ''; // @TODO create direct link to credential
if ($revision_created) {
$this->activityService->add(
@ -163,7 +167,7 @@ class CredentialController extends ApiController {
$link, $this->userId, Activity::TYPE_ITEM_ACTION);
}
$this->credentialRevisionService->createRevision($storedCredential, $this->userId, $credential_id);
$this->credentialRevisionService->createRevision($storedCredential, $storedCredential->getUserId(), $credential_id, $this->userId);
$credential = $this->credentialService->updateCredential($credential);
return new JSONResponse($credential);

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 ng-if="share_settings.linkSharing.enabled"><div>Expire settings:<select ng-model="share_settings.linkSharing.settings.type"><option value="null">Does not expire</option><option value="view_amount">Expire after a certain amount of views</option><option value="date">Expire after a date</option></select></div><div ng-show="share_settings.linkSharing.settings.type == \'date\'">Share until date <span datetime-picker ng-model="share_settings.linkSharing.settings.value" class="link" future-only ng-show="!share_settings.linkSharing.settings.value" close-on-select="false">No expire date set</span></div><div ng-show="share_settings.linkSharing.settings.type == \'view_amount\'">Share until views <input type="number" ng-model="share_settings.linkSharing.settings.value"></div><div><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 ng-if="share_settings.linkSharing.enabled"><div ng-if="share_settings.linkSharing.enabled">Expire settings:<select ng-model="share_settings.linkSharing.settings.type"><option value="null">Does not expire</option><option value="view_amount">Expire after a certain amount of views</option><option value="date">Expire after a date</option></select></div><div ng-show="share_settings.linkSharing.settings.type == \'date\'">Share until date <span datetime-picker ng-model="share_settings.linkSharing.settings.value" class="link" future-only ng-show="!share_settings.linkSharing.settings.value" close-on-select="false">No expire date set</span></div><div ng-show="share_settings.linkSharing.settings.type == \'view_amount\'">Share until views <input type="number" ng-model="share_settings.linkSharing.settings.value"></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

@ -38,12 +38,13 @@ class CredentialRevisionMapper extends Mapper {
return $this->findEntities($sql, $params);
}
public function create($credential, $userId, $credential_id) {
public function create($credential, $userId, $credential_id, $edited_by) {
$revision = new CredentialRevision();
$revision->setGuid($this->utils->GUID());
$revision->setUserId($userId);
$revision->setCreated($this->utils->getTime());
$revision->setCredentialId($credential_id);
$revision->setEditedBy($edited_by);
$revision->setCredentialData(base64_encode(serialize($credential)));
return $this->insert($revision);
}

View file

@ -25,8 +25,8 @@ class CredentialRevisionService {
$this->credentialRevisionMapper = $credentialRevisionMapper;
}
public function createRevision($credential, $userId, $credential_id) {
return $this->credentialRevisionMapper->create($credential, $userId, $credential_id);
public function createRevision($credential, $userId, $credential_id, $edited_by) {
return $this->credentialRevisionMapper->create($credential, $userId, $credential_id, $edited_by);
}
public function getRevisions($credential_id, $user_id = null){

View file

@ -4,7 +4,7 @@
Enable link sharing.<br/>
<input type="text" ng-model="share_link" select-on-click
ng-if="share_settings.linkSharing.enabled">
<div>
<div ng-if="share_settings.linkSharing.enabled">
Expire settings:
<select ng-model="share_settings.linkSharing.settings.type">
<option value="null">Does not expire</option>
@ -31,7 +31,7 @@
<input type="number"
ng-model="share_settings.linkSharing.settings.value">
</div>
<div>
<div ng-if="share_settings.linkSharing.enabled">
<table>
<tr>
<td><input type="checkbox"