Browse Source

app password scope wip

Signed-off-by: Robin Appelman <icewind@owncloud.com>
tags/v11.0RC2
Robin Appelman 7 years ago
parent
commit
b4e27d35f5
No account linked to committer's email address

+ 5
- 1
lib/private/Authentication/Token/DefaultToken.php View File

@@ -151,6 +151,10 @@ class DefaultToken extends Entity implements IToken {
}

public function setScope($scope) {
return parent::setScope(json_encode($scope));
if (is_string($scope)) {
$this->scope = $scope;
} else {
return parent::setScope(json_encode($scope));
}
}
}

+ 1
- 0
lib/private/Authentication/Token/DefaultTokenMapper.php View File

@@ -83,6 +83,7 @@ class DefaultTokenMapper extends Mapper {
if ($data === false) {
throw new DoesNotExistException('token does not exist');
}
;
return DefaultToken::fromRow($data);
}


+ 13
- 1
lib/private/Authentication/Token/IToken.php View File

@@ -67,13 +67,25 @@ interface IToken extends JsonSerializable {
public function getLastCheck();

/**
* Get the timestamp of the last password check
* Set the timestamp of the last password check
*
* @param int $time
*/
public function setLastCheck($time);

/**
* Get the authentication scope for this token
*
* If the scope is null no limitations exist for the token
*
* @return array|null
*/
public function getScope();

/**
* Set the authentication scope for this token
*
* @param array|null $scope
*/
public function setScope($scope);
}

+ 8
- 2
settings/css/settings.css View File

@@ -149,6 +149,12 @@ table.nostyle td { padding: 0.2em 0; }
padding: 10px 10px 10px 0;
}

#sessions .token-list td.icon,
#apppasswords .token-list td.icon {
width: 16px;
padding: 10px;
}

#sessions .token-list td,
#apppasswords .token-list td {
border-top: 1px solid #DDD;
@@ -162,8 +168,8 @@ table.nostyle td { padding: 0.2em 0; }
#apppasswords tr *:nth-child(2) {
text-align: right;
}
#sessions .token-list td a.icon-delete,
#apppasswords .token-list td a.icon-delete {
#sessions .token-list td a.icon,
#apppasswords .token-list td a.icon {
display: block;
opacity: 0.6;
}

+ 12
- 5
settings/js/authtoken_view.js View File

@@ -29,11 +29,16 @@
'<tr data-id="{{id}}">'
+ '<td class="has-tooltip" title="{{title}}"><span class="token-name">{{name}}</span></td>'
+ '<td><span class="last-activity has-tooltip" title="{{lastActivityTime}}">{{lastActivity}}</span></td>'
+ '<td class="icon">'
+ '{{#if canScope}}'
+ '<a class="icon icon-settings has-tooltip" title="' + t('core', 'Configure') + '"></a>'
+ '{{/if}}'
+ '</td>'
+ '<td class="icon">'
+ '{{#if canDelete}}'
+ '<td><a class="icon-delete has-tooltip" title="' + t('core', 'Disconnect') + '"></a></td>'
+ '{{else}}'
+ '<td></td>'
+ '<a class="icon icon-delete has-tooltip" title="' + t('core', 'Disconnect') + '"></a>'
+ '{{/if}}'
+ '</td>'
+ '<tr>';

var SubView = OC.Backbone.View.extend({
@@ -78,7 +83,7 @@
this._toggleHeader(tokens.length > 0);

tokens.forEach(function (token) {
var viewData = this._formatViewData(token.toJSON());
var viewData = this._formatViewData(token);
var html = _this.template(viewData);
var $html = $(html);
$html.find('.has-tooltip').tooltip({container: 'body'});
@@ -94,10 +99,12 @@
this.$('.hidden-when-empty').toggleClass('hidden', !show);
},

_formatViewData: function (viewData) {
_formatViewData: function (token) {
var viewData = token.toJSON();
var ts = viewData.lastActivity * 1000;
viewData.lastActivity = OC.Util.relativeModifiedDate(ts);
viewData.lastActivityTime = OC.Util.formatDate(ts, 'LLL');
viewData.canScope = token.get('type') === '1';

// preserve title for cases where we format it further
viewData.title = viewData.name;

+ 1
- 0
settings/templates/personal.php View File

@@ -220,6 +220,7 @@ if($_['passwordChangeSupported']) {
<th><?php p($l->t('Name'));?></th>
<th><?php p($l->t('Last activity'));?></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody class="token-list icon-loading">

Loading…
Cancel
Save