diff options
author | Christoph Wurst <christoph@owncloud.com> | 2016-05-18 12:03:22 +0200 |
---|---|---|
committer | Christoph Wurst <christoph@owncloud.com> | 2016-05-23 09:11:12 +0200 |
commit | 12431aa3997154aaea4eec11c2dd65f9e5dbe179 (patch) | |
tree | 8395c270b144401f53e5ed048f94a28002410e3d /settings/js/authtoken_view.js | |
parent | 357d342467b9200f190376a2bd224fa7b803b45a (diff) | |
download | nextcloud-server-12431aa3997154aaea4eec11c2dd65f9e5dbe179.tar.gz nextcloud-server-12431aa3997154aaea4eec11c2dd65f9e5dbe179.zip |
list user's auth tokens on the personal settings page
Diffstat (limited to 'settings/js/authtoken_view.js')
-rw-r--r-- | settings/js/authtoken_view.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/settings/js/authtoken_view.js b/settings/js/authtoken_view.js new file mode 100644 index 00000000000..0ca16821233 --- /dev/null +++ b/settings/js/authtoken_view.js @@ -0,0 +1,93 @@ +/* global Backbone, Handlebars */ + +/** + * @author Christoph Wurst <christoph@owncloud.com> + * + * @copyright Copyright (c) 2016, ownCloud, Inc. + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + * + */ + +(function(OC, _, Backbone, $, Handlebars) { + 'use strict'; + + OC.Settings = OC.Settings || {}; + + var TEMPLATE_TOKEN = + '<tr>' + + '<td>{{name}}</td>' + + '<td>{{lastActivity}}</td>' + + '<tr>'; + + var SubView = Backbone.View.extend({ + collection: null, + type: 0, + template: Handlebars.compile(TEMPLATE_TOKEN), + initialize: function(options) { + this.type = options.type; + this.collection = options.collection; + }, + render: function() { + var _this = this; + + var list = this.$el.find('.token-list'); + var tokens = this.collection.filter(function(token) { + return parseInt(token.get('type')) === _this.type; + }); + list.removeClass('icon-loading'); + list.html(''); + + tokens.forEach(function(token) { + var html = _this.template(token.toJSON()); + list.append(html); + }); + }, + }); + + var AuthTokenView = Backbone.View.extend({ + collection: null, + views + : [], + initialize: function(options) { + this.collection = options.collection; + + var tokenTypes = [0, 1]; + var _this = this; + _.each(tokenTypes, function(type) { + _this.views.push(new SubView({ + el: type === 0 ? '#sessions' : '#devices', + type: type, + collection: _this.collection + })); + }); + }, + render: function() { + _.each(this.views, function(view) { + view.render(); + }); + }, + reload: function() { + var loadingTokens = this.collection.fetch(); + + var _this = this; + $.when(loadingTokens).done(function() { + _this.render(); + }); + } + }); + + OC.Settings.AuthTokenView = AuthTokenView; + +})(OC, _, Backbone, $, Handlebars); |