Merge pull request #5266 from nextcloud/backport-5166-combine-apptokens-and-sessions

[stable12] combine apptokens and sessions
This commit is contained in:
Morris Jobke 2017-06-06 08:03:04 -05:00 committed by GitHub
commit 477f4965ca
6 changed files with 39 additions and 83 deletions

View File

@ -168,6 +168,7 @@ return array(
'OCP\\Files\\Storage\\IStorage' => $baseDir . '/lib/public/Files/Storage/IStorage.php',
'OCP\\Files\\Storage\\IStorageFactory' => $baseDir . '/lib/public/Files/Storage/IStorageFactory.php',
'OCP\\Files\\UnseekableException' => $baseDir . '/lib/public/Files/UnseekableException.php',
'OCP\\GlobalScale\\IConfig' => $baseDir . '/lib/public/GlobalScale/IConfig.php',
'OCP\\GroupInterface' => $baseDir . '/lib/public/GroupInterface.php',
'OCP\\Http\\Client\\IClient' => $baseDir . '/lib/public/Http/Client/IClient.php',
'OCP\\Http\\Client\\IClientService' => $baseDir . '/lib/public/Http/Client/IClientService.php',
@ -623,6 +624,7 @@ return array(
'OC\\Files\\Utils\\Scanner' => $baseDir . '/lib/private/Files/Utils/Scanner.php',
'OC\\Files\\View' => $baseDir . '/lib/private/Files/View.php',
'OC\\ForbiddenException' => $baseDir . '/lib/private/ForbiddenException.php',
'OC\\GlobalScale\\Config' => $baseDir . '/lib/private/GlobalScale/Config.php',
'OC\\Group\\Backend' => $baseDir . '/lib/private/Group/Backend.php',
'OC\\Group\\Database' => $baseDir . '/lib/private/Group/Database.php',
'OC\\Group\\Group' => $baseDir . '/lib/private/Group/Group.php',

View File

@ -198,6 +198,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OCP\\Files\\Storage\\IStorage' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IStorage.php',
'OCP\\Files\\Storage\\IStorageFactory' => __DIR__ . '/../../..' . '/lib/public/Files/Storage/IStorageFactory.php',
'OCP\\Files\\UnseekableException' => __DIR__ . '/../../..' . '/lib/public/Files/UnseekableException.php',
'OCP\\GlobalScale\\IConfig' => __DIR__ . '/../../..' . '/lib/public/GlobalScale/IConfig.php',
'OCP\\GroupInterface' => __DIR__ . '/../../..' . '/lib/public/GroupInterface.php',
'OCP\\Http\\Client\\IClient' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IClient.php',
'OCP\\Http\\Client\\IClientService' => __DIR__ . '/../../..' . '/lib/public/Http/Client/IClientService.php',
@ -653,6 +654,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c
'OC\\Files\\Utils\\Scanner' => __DIR__ . '/../../..' . '/lib/private/Files/Utils/Scanner.php',
'OC\\Files\\View' => __DIR__ . '/../../..' . '/lib/private/Files/View.php',
'OC\\ForbiddenException' => __DIR__ . '/../../..' . '/lib/private/ForbiddenException.php',
'OC\\GlobalScale\\Config' => __DIR__ . '/../../..' . '/lib/private/GlobalScale/Config.php',
'OC\\Group\\Backend' => __DIR__ . '/../../..' . '/lib/private/Group/Backend.php',
'OC\\Group\\Database' => __DIR__ . '/../../..' . '/lib/private/Group/Database.php',
'OC\\Group\\Group' => __DIR__ . '/../../..' . '/lib/private/Group/Group.php',

View File

@ -300,35 +300,29 @@ table.nostyle td {
padding: 0.2em 0;
}
#sessions table,
#apppasswords table {
#sessions table {
width: 100%;
min-height: 50px;
padding-top: 5px;
max-width: 580px;
}
#sessions table th,
#apppasswords table th {
#sessions table th{
opacity: .5;
}
#sessions table th,
#sessions table td,
#apppasswords table th,
#apppasswords table td {
#sessions table td {
padding: 10px 10px 10px 0;
}
#sessions .token-list td.more,
#apppasswords .token-list td.more {
#sessions .token-list td.more {
overflow: visible;
position: relative;
width: 16px;
}
#sessions .token-list td,
#apppasswords .token-list td {
#sessions .token-list td {
border-top: 1px solid #DDD;
text-overflow: ellipsis;
max-width: 200px;
@ -338,37 +332,30 @@ table.nostyle td {
position: relative;
}
#sessions tr > *:nth-child(2),
#apppasswords tr > *:nth-child(2) {
#sessions tr > *:nth-child(2) {
text-align: right;
}
#sessions .token-list td > a.icon,
#apppasswords .token-list td > a.icon {
#sessions .token-list td > a.icon {
opacity: 0;
transition: opacity 0.5s;
}
#sessions .token-list a.icon,
#apppasswords .token-list a.icon {
#sessions .token-list a.icon {
margin-top: 4px;
display: block;
}
#sessions .token-list tr:hover td > a.icon,
#apppasswords .token-list tr:hover td > a.icon,
#sessions .token-list tr.active td > a.icon,
#apppasswords .token-list tr.active td > a.icon {
#sessions .token-list tr.active td > a.icon {
opacity: 0.6;
}
#sessions .token-list td div.configure,
#apppasswords .token-list td div.configure {
#sessions .token-list td div.configure {
display: none;
}
#sessions .token-list tr.active div.configure,
#apppasswords .token-list tr.active div.configure {
#sessions .token-list tr.active div.configure {
display: block;
position: absolute;
top: 45px;
@ -376,20 +363,17 @@ table.nostyle td {
padding: 10px;
}
#sessions .token-list div.configure:after,
#apppasswords .token-list div.configure:after {
#sessions .token-list div.configure:after {
right: 13px;
}
#sessions .token-list tr.active div.configure > *,
#apppasswords .token-list tr.active div.configure > * {
#sessions .token-list tr.active div.configure > * {
margin-top: 5px;
margin-bottom: 5px;
display: inline-block;
}
#sessions .token-list tr.active a.icon-delete,
#apppasswords .token-list tr.active a.icon-delete {
#sessions .token-list tr.active a.icon-delete {
background-position: left;
padding-left: 20px;
}

View File

@ -48,15 +48,6 @@
var SubView = OC.Backbone.View.extend({
collection: null,
/**
* token type
* - 0: browser
* - 1: device
*
* @see OC\Authentication\Token\IToken
*/
type: 0,
_template: undefined,
template: function (data) {
@ -68,7 +59,6 @@
},
initialize: function (options) {
this.type = options.type;
this.collection = options.collection;
this.on(this.collection, 'change', this.render);
@ -79,7 +69,7 @@
var list = this.$('.token-list');
var tokens = this.collection.filter(function (token) {
return token.get('type') === _this.type;
return true;
});
list.html('');
@ -183,7 +173,7 @@
var AuthTokenView = OC.Backbone.View.extend({
collection: null,
_views: [],
_view: [],
_form: undefined,
@ -206,26 +196,21 @@
initialize: function (options) {
this.collection = options.collection;
var tokenTypes = [0, 1];
var _this = this;
_.each(tokenTypes, function (type) {
var el = type === 0 ? '#sessions' : '#apppasswords';
_this._views.push(new SubView({
el: el,
type: type,
collection: _this.collection
}));
var $el = $(el);
$('body').on('click', _.bind(_this._hideConfigureToken, _this));
$el.on('click', '.popovermenu', function(event) {
event.stopPropagation();
});
$el.on('click', 'a.icon-delete', _.bind(_this._onDeleteToken, _this));
$el.on('click', '.icon-more', _.bind(_this._onConfigureToken, _this));
$el.on('change', 'input.filesystem', _.bind(_this._onSetTokenScope, _this));
var el = '#sessions';
this._view = new SubView({
el: el,
collection: this.collection
});
var $el = $(el);
$('body').on('click', _.bind(this._hideConfigureToken, this));
$el.on('click', '.popovermenu', function(event) {
event.stopPropagation();
});
$el.on('click', 'a.icon-delete', _.bind(this._onDeleteToken, this));
$el.on('click', '.icon-more', _.bind(this._onConfigureToken, this));
$el.on('change', 'input.filesystem', _.bind(this._onSetTokenScope, this));
this._form = $('#app-password-form');
this._tokenName = $('#app-password-name');
this._addAppPasswordBtn = $('#add-app-password');
@ -233,7 +218,7 @@
this._appPasswordName = $('#app-password-name');
this._appPasswordName.on('keypress', function(event) {
if (event.which === 13) {
_this._addAppPassword();
this._addAppPassword();
}
});
@ -287,18 +272,14 @@
},
render: function () {
_.each(this._views, function (view) {
view.render();
view.toggleLoading(false);
});
this._view.render();
this._view.toggleLoading(false);
},
reload: function () {
var _this = this;
_.each(this._views, function (view) {
view.toggleLoading(true);
});
this._view.toggleLoading(true);
var loadingTokens = this.collection.fetch();

View File

@ -235,7 +235,6 @@ if (\OC::$server->getAppManager()->isEnabledForUser('firstrunwizard')) {
$formsAndMore[]= ['anchor' => 'clientsbox', 'section-name' => $l->t('Sync clients')];
}
$formsAndMore[]= ['anchor' => 'sessions', 'section-name' => $l->t('Sessions')];
$formsAndMore[]= ['anchor' => 'apppasswords', 'section-name' => $l->t('App passwords')];
$forms=OC_App::getForms('personal');

View File

@ -348,22 +348,10 @@ if($_['passwordChangeSupported']) {
<tbody class="token-list">
</tbody>
</table>
</div>
<div id="apppasswords" class="section">
<h2><?php p($l->t('App passwords'));?></h2>
<h3><?php p($l->t('App passwords'));?></h3>
<p class="settings-hint"><?php p($l->t('Here you can generate individual passwords for apps so you dont have to give out your password. You can revoke them individually too.'));?></p>
<table class="icon-loading">
<thead class="hidden-when-empty">
<tr>
<th><?php p($l->t('Name'));?></th>
<th><?php p($l->t('Last activity'));?></th>
<th></th>
</tr>
</thead>
<tbody class="token-list">
</tbody>
</table>
<div id="app-password-form">
<input id="app-password-name" type="text" placeholder="<?php p($l->t('App name')); ?>">
<button id="add-app-password" class="button"><?php p($l->t('Create new app password')); ?></button>