From 8f9d53726f0d992993590f1900d7f41d2d8b035c Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Tue, 26 Aug 2008 17:40:02 +0000 Subject: [PATCH] Monotone-Parent: 2946be96e24ef28355163488376def0341ef650f Monotone-Revision: 57efdfff0ce1c589f0aa7c70ace7f877ffa5d52c Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2008-08-26T17:40:02 Monotone-Branch: ca.inverse.sogo --- SoObjects/SOGo/SOGoUserFolder.m | 43 ++++++++++++++++++--- UI/Common/Dutch.lproj/Localizable.strings | 3 ++ UI/Common/English.lproj/Localizable.strings | 3 ++ UI/Common/French.lproj/Localizable.strings | 3 ++ UI/Common/German.lproj/Localizable.strings | 3 ++ UI/Common/Italian.lproj/Localizable.strings | 3 ++ UI/Common/Spanish.lproj/Localizable.strings | 3 ++ UI/SOGoUI/GNUmakefile | 1 + UI/SOGoUI/UIxModuleAccessDenied.h | 27 +++++++++++++ UI/SOGoUI/UIxModuleAccessDenied.m | 27 +++++++++++++ UI/Templates/UIxModuleAccessDenied.wox | 18 +++++++++ 11 files changed, 128 insertions(+), 6 deletions(-) create mode 100644 UI/SOGoUI/UIxModuleAccessDenied.h create mode 100644 UI/SOGoUI/UIxModuleAccessDenied.m create mode 100644 UI/Templates/UIxModuleAccessDenied.wox diff --git a/SoObjects/SOGo/SOGoUserFolder.m b/SoObjects/SOGo/SOGoUserFolder.m index 0b90f4c0d..3504ebc30 100644 --- a/SoObjects/SOGo/SOGoUserFolder.m +++ b/SoObjects/SOGo/SOGoUserFolder.m @@ -27,6 +27,7 @@ #import #import #import +#import #import #import #import @@ -44,6 +45,8 @@ #import #import +#import + #import "NSArray+Utilities.h" #import "NSDictionary+Utilities.h" #import "LDAPUserManager.h" @@ -442,6 +445,26 @@ return [$(@"SOGoFreeBusyObject") objectWithName: _key inContainer: self]; } +- (WOResponse *) _moduleAccessDeniedPage +{ + WOResponse *response; + UIxComponent *page; + NSString *content; + + response = [context response]; + [response setStatus: 403]; + [response setHeader: @"text/html; charset=utf8" + forKey: @"content-type"]; + page = [[WOApplication application] pageWithName: @"UIxModuleAccessDenied" + inContext: context]; +// [page appendToResponse: response +// inContext: context]; + content = [[page generateResponse] contentAsString]; + [response appendContentString: content]; + + return response; +} + - (id) lookupName: (NSString *) _key inContext: (WOContext *) _ctx acquire: (BOOL) _flag @@ -454,14 +477,22 @@ if (!obj) { currentUser = [_ctx activeUser]; - if ([_key isEqualToString: @"Calendar"] - && [currentUser canAccessModule: _key]) - obj = [self privateCalendars: @"Calendar" inContext: _ctx]; + if ([_key isEqualToString: @"Calendar"]) + { + if ([currentUser canAccessModule: _key]) + obj = [self privateCalendars: @"Calendar" inContext: _ctx]; + else + obj = [self _moduleAccessDeniedPage]; + } else if ([_key isEqualToString: @"Contacts"]) obj = [self privateContacts: _key inContext: _ctx]; - else if ([_key isEqualToString: @"Mail"] - && [currentUser canAccessModule: _key]) - obj = [self mailAccountsFolder: _key inContext: _ctx]; + else if ([_key isEqualToString: @"Mail"]) + { + if ([currentUser canAccessModule: _key]) + obj = [self mailAccountsFolder: _key inContext: _ctx]; + else + obj = [self _moduleAccessDeniedPage]; + } else if ([_key isEqualToString: @"Preferences"]) obj = [$(@"SOGoPreferencesFolder") objectWithName: _key inContainer: self]; diff --git a/UI/Common/Dutch.lproj/Localizable.strings b/UI/Common/Dutch.lproj/Localizable.strings index 236872f14..cad26b5a7 100644 --- a/UI/Common/Dutch.lproj/Localizable.strings +++ b/UI/Common/Dutch.lproj/Localizable.strings @@ -40,3 +40,6 @@ = "U bent al op deze map geabonneerd!"; "The user rights cannot be edited for this object!" = "De machtigingen kunnen niet worden aangepast voor dit object!"; + +"You are not allowed to access this module or this system. Please contact your system administrator." += "You are not allowed to access this module or this system. Please contact your system administrator."; diff --git a/UI/Common/English.lproj/Localizable.strings b/UI/Common/English.lproj/Localizable.strings index 3231c2232..d134dc122 100644 --- a/UI/Common/English.lproj/Localizable.strings +++ b/UI/Common/English.lproj/Localizable.strings @@ -41,3 +41,6 @@ = "You have already subscribed to that folder!"; "The user rights cannot be edited for this object!" = "The user rights cannot be edited for this object!"; + +"You are not allowed to access this module or this system. Please contact your system administrator." += "You are not allowed to access this module or this system. Please contact your system administrator."; diff --git a/UI/Common/French.lproj/Localizable.strings b/UI/Common/French.lproj/Localizable.strings index 86a4d8230..950d8cf2c 100644 --- a/UI/Common/French.lproj/Localizable.strings +++ b/UI/Common/French.lproj/Localizable.strings @@ -38,3 +38,6 @@ = "Vous êtes déja abonné à ce dossier."; "The user rights cannot be edited for this object!" = "Les droits sur cet objet ne peuvent pas être édités."; + +"You are not allowed to access this module or this system. Please contact your system administrator." += "Vous n'êtes pas autorisé à accéder à ce module ou ce système. Veuillez contacter votre administrateur système."; diff --git a/UI/Common/German.lproj/Localizable.strings b/UI/Common/German.lproj/Localizable.strings index be0566a40..7e9f23add 100644 --- a/UI/Common/German.lproj/Localizable.strings +++ b/UI/Common/German.lproj/Localizable.strings @@ -40,3 +40,6 @@ = "Sie haben diesen Ordner bereits abonniert!"; "The user rights cannot be edited for this object!" = "Die Benutzer-Rechte können für dieses Objekt nicht verändert werden!"; + +"You are not allowed to access this module or this system. Please contact your system administrator." += "You are not allowed to access this module or this system. Please contact your system administrator."; diff --git a/UI/Common/Italian.lproj/Localizable.strings b/UI/Common/Italian.lproj/Localizable.strings index 67d74e0ce..992998b2a 100644 --- a/UI/Common/Italian.lproj/Localizable.strings +++ b/UI/Common/Italian.lproj/Localizable.strings @@ -35,3 +35,6 @@ "Unable to rename that folder!" = "Impossibile rinominare la cartella!"; "You have already subscribed to that folder!" = "Hai già sottoscritto la cartella!"; "The user rights cannot be edited for this object!" = "I permessi di questo oggetto non possono essere modificati!"; + +"You are not allowed to access this module or this system. Please contact your system administrator." += "You are not allowed to access this module or this system. Please contact your system administrator."; diff --git a/UI/Common/Spanish.lproj/Localizable.strings b/UI/Common/Spanish.lproj/Localizable.strings index 48d10888d..13373eeb3 100644 --- a/UI/Common/Spanish.lproj/Localizable.strings +++ b/UI/Common/Spanish.lproj/Localizable.strings @@ -45,3 +45,6 @@ = "Ya se ha suscrito a esta carpeta."; "The user rights cannot be edited for this object!" = "No es posible modificar los permisos de acceso a este objeto."; + +"You are not allowed to access this module or this system. Please contact your system administrator." += "You are not allowed to access this module or this system. Please contact your system administrator."; diff --git a/UI/SOGoUI/GNUmakefile b/UI/SOGoUI/GNUmakefile index b5d473102..eb688328b 100644 --- a/UI/SOGoUI/GNUmakefile +++ b/UI/SOGoUI/GNUmakefile @@ -23,6 +23,7 @@ libSOGoUI_OBJC_FILES += \ \ UIxJSClose.m \ UIxComponent.m \ + UIxModuleAccessDenied.m \ SOGoAptFormatter.m \ WOContext+UIx.m \ SOGoACLAdvisory.m \ diff --git a/UI/SOGoUI/UIxModuleAccessDenied.h b/UI/SOGoUI/UIxModuleAccessDenied.h new file mode 100644 index 000000000..5c5a1378d --- /dev/null +++ b/UI/SOGoUI/UIxModuleAccessDenied.h @@ -0,0 +1,27 @@ +/* UIxModuleAccessDenied.h - this file is part of SOGo + * + * Copyright (C) 2008 Inverse inc. + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#import "UIxComponent.h" + +@interface UIxModuleAccessDenied : UIxComponent + +@end diff --git a/UI/SOGoUI/UIxModuleAccessDenied.m b/UI/SOGoUI/UIxModuleAccessDenied.m new file mode 100644 index 000000000..a050f0344 --- /dev/null +++ b/UI/SOGoUI/UIxModuleAccessDenied.m @@ -0,0 +1,27 @@ +/* UIxModuleAccessDenied.m - this file is part of SOGo + * + * Copyright (C) 2008 Inverse inc. + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#import "UIxModuleAccessDenied.h" + +@implementation UIxModuleAccessDenied + +@end diff --git a/UI/Templates/UIxModuleAccessDenied.wox b/UI/Templates/UIxModuleAccessDenied.wox new file mode 100644 index 000000000..fc4952a7e --- /dev/null +++ b/UI/Templates/UIxModuleAccessDenied.wox @@ -0,0 +1,18 @@ + + + +
+ +
+