[Kimchi-devel] [PATCH] Bugfix Issue#397 UI Broken when cookie is clear
Royce Lv
lvroyce at linux.vnet.ibm.com
Wed Jul 30 08:03:32 UTC 2014
Reviewed-by: Royce Lv<lvroyce at linux.vnet.ibm.com>
Tested-by: Royce Lv<lvroyce at linux.vnet.ibm.com>
On 2014年07月28日 12:14, wenwang at linux.vnet.ibm.com wrote:
> From: Wen Wang <wenwang at linux.vnet.ibm.com>
>
> 1)Fixed the bug that login page cannot find cookies when "roles" in
> the cookie is deleted in browser
> 2)Have the "eval()" function changed to JSON.parse() which is safer
> 3)Have the var "_tabMode" changed to "kimchi.tabMode" that better fit
> kimchi namespace
> 4)Changed lifetime of cookie "roles" to session
>
> Signed-off-by: Wen Wang <wenwang at linux.vnet.ibm.com>
> ---
> ui/js/src/kimchi.guest_main.js | 3 +--
> ui/js/src/kimchi.login.js | 2 +-
> ui/js/src/kimchi.main.js | 23 +++++++++++++----------
> ui/js/src/kimchi.network.js | 5 ++---
> ui/js/src/kimchi.storage_main.js | 7 +++----
> ui/js/src/kimchi.template_main.js | 3 +--
> 6 files changed, 21 insertions(+), 22 deletions(-)
>
> diff --git a/ui/js/src/kimchi.guest_main.js b/ui/js/src/kimchi.guest_main.js
> index d81c6b7..394ec9d 100644
> --- a/ui/js/src/kimchi.guest_main.js
> +++ b/ui/js/src/kimchi.guest_main.js
> @@ -323,8 +323,7 @@ kimchi.guestSetRequestHeader = function(xhr) {
> };
>
> kimchi.guest_main = function() {
> - var guestsMode = _tabMode['guests'];
> - if(guestsMode === 'admin') {
> + if(kimchi.tabMode['guests'] === 'admin') {
> $('.tools').attr('style','display');
> $("#vm-add").on("click", function(event) {
> kimchi.window.open('guest-add.html');
> diff --git a/ui/js/src/kimchi.login.js b/ui/js/src/kimchi.login.js
> index b20f0b0..f9c9af0 100644
> --- a/ui/js/src/kimchi.login.js
> +++ b/ui/js/src/kimchi.login.js
> @@ -57,7 +57,7 @@ kimchi.login_main = function() {
> var next_url = lastPage ? lastPage.replace(/\"/g,'') : "/";
> }
> var next_url = lastPage ? lastPage.replace(/\"/g,'') : "/";
> - kimchi.cookie.set('roles',JSON.stringify(data.roles), 365);
> + kimchi.cookie.set('roles',JSON.stringify(data.roles));
> window.location.replace(next_url)
> }, function() {
> $("#messUserPass").show();
> diff --git a/ui/js/src/kimchi.main.js b/ui/js/src/kimchi.main.js
> index 01ebded..b79c7f8 100644
> --- a/ui/js/src/kimchi.main.js
> +++ b/ui/js/src/kimchi.main.js
> @@ -15,7 +15,7 @@
> * See the License for the specific language governing permissions and
> * limitations under the License.
> */
> -var _tabMode = {};
> +kimchi.tabMode = {};
> kimchi.main = function() {
> kimchi.popable();
>
> @@ -46,15 +46,18 @@ kimchi.main = function() {
> var title = i18n[titleKey] ? i18n[titleKey] : titleKey;
> var path = $tab.find('path').text();
> var roles = kimchi.cookie.get('roles');
> - var roleString = 'JSON.parse(roles).' + titleKey.toLowerCase();
> - var role = eval(roleString);
> - var mode = $tab.find('[role="' + role + '"]').attr('mode');
> - _tabMode[titleKey.toLowerCase()] = mode;
> - tabs.push({
> - title: title,
> - path: path,
> - mode: mode
> - });
> + if (roles) {
> + var role = JSON.parse(roles)[titleKey.toLowerCase()];
> + var mode = $tab.find('[role="' + role + '"]').attr('mode');
> + kimchi.tabMode[titleKey.toLowerCase()] = mode;
> + tabs.push({
> + title: title,
> + path: path,
> + mode: mode
> + });
> + } else {
> + document.location.href = 'login.html';
> + }
> });
>
> return tabs;
> diff --git a/ui/js/src/kimchi.network.js b/ui/js/src/kimchi.network.js
> index 5b811ca..1530dd9 100644
> --- a/ui/js/src/kimchi.network.js
> +++ b/ui/js/src/kimchi.network.js
> @@ -19,8 +19,7 @@
> kimchi.NETWORK_TYPE_BRIDGE = "bridged";
>
> kimchi.initNetwork = function() {
> - var networkMode = _tabMode['network'];
> - if(networkMode === 'admin') {
> + if(kimchi.tabMode['network'] === 'admin') {
> $('.tools').attr('style','display');
> $('#network-content .header span:last-child').attr('style','display');
> kimchi.initNetworkCreation();
> @@ -53,7 +52,7 @@ kimchi.initNetworkListView = function() {
>
> kimchi.addNetworkItem = function(network) {
> $("#networkBody").append(kimchi.getNetworkItemHtml(network));
> - if(_tabMode["network"] === "admin") {
> + if(kimchi.tabMode["network"] === "admin") {
> $(".column-action").attr("style","display");
> } else {
> $(".column-space").addClass('column-space-no-border-right');
> diff --git a/ui/js/src/kimchi.storage_main.js b/ui/js/src/kimchi.storage_main.js
> index 4b6fd13..49fcc4a 100644
> --- a/ui/js/src/kimchi.storage_main.js
> +++ b/ui/js/src/kimchi.storage_main.js
> @@ -30,7 +30,7 @@ kimchi.doListStoragePools = function() {
> }
> });
> $('#storagepoolsList').html(listHtml);
> - if(_tabMode['storage'] === 'admin') {
> + if(kimchi.tabMode['storage'] === 'admin') {
> $('.storage-button').attr('style','display');
> } else {
> $('.storage-allocate').addClass('storage-allocate-padding-user');
> @@ -79,7 +79,7 @@ kimchi.storageBindClick = function() {
> }
> });
>
> - if(_tabMode['storage'] === 'admin') {
> + if(kimchi.tabMode['storage'] === 'admin') {
> $('.pool-delete').on('click', function(event) {
> var $pool = $(this);
> var settings = {
> @@ -242,8 +242,7 @@ kimchi.initLogicalPoolExtend = function() {
> }
>
> kimchi.storage_main = function() {
> - var storageMode = _tabMode['storage'];
> - if(storageMode === 'admin') {
> + if(kimchi.tabMode['storage'] === 'admin') {
> $('.tools').attr('style','display');
> $('#storage-pool-add').on('click', function() {
> kimchi.window.open('storagepool-add.html');
> diff --git a/ui/js/src/kimchi.template_main.js b/ui/js/src/kimchi.template_main.js
> index 7ce408f..4fa4dd8 100644
> --- a/ui/js/src/kimchi.template_main.js
> +++ b/ui/js/src/kimchi.template_main.js
> @@ -83,8 +83,7 @@ kimchi.hideTitle = function() {
> };
>
> kimchi.template_main = function() {
> - var templatesMode = _tabMode['templates'];
> - if(templatesMode === 'admin') {
> + if(kimchi.tabMode['templates'] === 'admin') {
> $('.tools').attr('style','display');
> $("#template-add").on("click", function(event) {
> kimchi.window.open({
More information about the Kimchi-devel
mailing list