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);
}
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;
#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;
}
'<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({
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'});
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;