Index: lams_admin/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -96,6 +96,7 @@ role.LEARNER = Learner role.MONITOR = Monitor role.SYSADMIN = System Admin +role.APPADMIN = App Admin label.member.of = Member of label.with.roles = With roles admin.organisation.management = Course/Subcourse management @@ -280,7 +281,8 @@ label.monitors = Monitors label.authors = Authors label.group.managers = Course Managers -label.appadmins = Sysadmins +label.sysadmins = Sysadmins +label.appadmins = Appadmins label.author.admins = Author Administrators heading.users = Users label.number.of.users = {0} users. @@ -425,7 +427,8 @@ sysadmin.login.request.ttl.enable = Enforce time limitation for integration requests config.live.edit = Enable live edit sysadmin.extGroupsUrl = External groups URL -server.config.title = Server configuration +server.sys.config.title = Server configuration +server.app.config.title = Application configuration server.monitor.title = Server monitoring user.course.title = User and course configuration config.site.name = Site name Index: lams_admin/conf/language/lams/ApplicationResources_cy_GB.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_cy_GB.properties (.../ApplicationResources_cy_GB.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_cy_GB.properties (.../ApplicationResources_cy_GB.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -185,7 +185,7 @@ admin.register.directory.public =Cyhoeddus admin.register.directory.private =Preifat admin.register.heading.title =Cofrestru eich gweinydd gyda'r LAMS Community -admin.register.server.config.title =Ffurfweddiad y Gweinydd +admin.register.server.sys.config.title =Ffurfweddiad y Gweinydd admin.register.server.stats.title =Ystadegau'r Gweinydd admin.register.server.config.url =URL y Gweinydd admin.register.server.config.version =Fersiwn y Gweinydd Index: lams_admin/conf/language/lams/ApplicationResources_da_DK.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_da_DK.properties (.../ApplicationResources_da_DK.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_da_DK.properties (.../ApplicationResources_da_DK.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -49,7 +49,7 @@ admin.register.directory.public =Offentlig admin.register.directory.private =Privat admin.register.heading.title =Registr\u00e9r din server i LAMS Community -admin.register.server.config.title =Serverops\u00e6tning +admin.register.server.sys.config.title =Serverops\u00e6tning admin.register.server.stats.title =Serverstatistik admin.register.server.config.url =Server URL admin.register.server.config.version =Server version Index: lams_admin/conf/language/lams/ApplicationResources_de_DE.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_de_DE.properties (.../ApplicationResources_de_DE.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_de_DE.properties (.../ApplicationResources_de_DE.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -280,7 +280,7 @@ label.monitors = Übersichten label.authors = Autoren label.group.managers = Gruppenmanager -label.appadmins = Systemadministratoren +label.sysadmins = Systemadministratoren label.author.admins = Autorenadministratoren heading.users = Benutzer label.number.of.users = {0} Benutzer. Index: lams_admin/conf/language/lams/ApplicationResources_el_GR.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_el_GR.properties (.../ApplicationResources_el_GR.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_el_GR.properties (.../ApplicationResources_el_GR.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -280,7 +280,7 @@ label.monitors = Επόπτες label.authors = Συγγραφείς label.group.managers = Διαχειριστές Ομάδας -label.appadmins = Διαχ. Συστήματος (Sysadmins) +label.sysadmins = Διαχ. Συστήματος (Sysadmins) label.author.admins = Διαχειριστές Συγγραφέων heading.users = Χρήστες label.number.of.users = {0} χρήστες @@ -425,7 +425,7 @@ sysadmin.login.request.ttl.enable = Επιβολή χρονικό περιορισμού στον απαιτούμενο χρόνος εισόδου config.live.edit = Ενεργοποίηση ζωντανής επεξεργασίας sysadmin.extGroupsUrl = URL Εξωτερικών ομάδων -server.config.title = Διαμόρφωση του εξυπηρετητή (server) +server.sys.config.title = Διαμόρφωση του εξυπηρετητή (server) server.monitor.title = Παρακολούθηση - Eλεγχος ορθής λειτουργίας server user.course.title = Διαμόρφωση χρήστη και μαθήματος config.site.name = Ονομα ιστότοπου Index: lams_admin/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_en_AU.properties (.../ApplicationResources_en_AU.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -280,7 +280,7 @@ label.monitors = Monitors label.authors = Authors label.group.managers = Course Managers -label.appadmins = Sysadmins +label.sysadmins = Sysadmins label.author.admins = Author Administrators heading.users = Users label.number.of.users = {0} users. @@ -425,7 +425,7 @@ sysadmin.login.request.ttl.enable = Enforce time limitation for integration requests config.live.edit = Enable live edit sysadmin.extGroupsUrl = External groups URL -server.config.title = Server configuration +server.sys.config.title = Server configuration server.monitor.title = Server monitoring user.course.title = User and course configuration config.site.name = Site name Index: lams_admin/conf/language/lams/ApplicationResources_es_ES.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_es_ES.properties (.../ApplicationResources_es_ES.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_es_ES.properties (.../ApplicationResources_es_ES.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -280,7 +280,7 @@ label.monitors = Tutores label.authors = Instructores label.group.managers = Gestionadores de Clase -label.appadmins = Administradores del Sistema +label.sysadmins = Administradores del Sistema label.author.admins = Administradores de Instructores heading.users = Usuarios label.number.of.users = {0} usuarios. @@ -425,7 +425,7 @@ sysadmin.login.request.ttl.enable = Utilizar parámetro de tiempo de vida para integraciones config.live.edit = Habilitar Edición en Vivo sysadmin.extGroupsUrl = URL para grupos externos -server.config.title = Configuración servidor +server.sys.config.title = Configuración servidor server.monitor.title = Monitoreo del servidor user.course.title = Configuración de usuarios y clases config.site.name = Nombre del sitio Index: lams_admin/conf/language/lams/ApplicationResources_es_MX.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_es_MX.properties (.../ApplicationResources_es_MX.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_es_MX.properties (.../ApplicationResources_es_MX.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -183,7 +183,7 @@ admin.register.directory.public =P\u00fablico admin.register.directory.private =Privado admin.register.heading.title =Registre su servidor con la Communidad LAMS -admin.register.server.config.title =Configuraci\u00f3n de Servidor +admin.register.server.sys.config.title =Configuraci\u00f3n de Servidor admin.register.server.stats.title =Estad\u00edsticas del Servidor admin.register.server.config.url =URL del Servidor admin.register.server.config.version =Versi\u00f3n @@ -337,7 +337,7 @@ label.authors =Profesores label.group.managers =Gestionadores de Clase label.group.admins =Administradores de Clase -label.appadmins =Administradores del Sistema +label.sysadmins =Administradores del Sistema label.author.admins =Administradores de Profesores heading.users =Usuarios label.number.of.users ={0} usuarios. Index: lams_admin/conf/language/lams/ApplicationResources_fr_FR.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_fr_FR.properties (.../ApplicationResources_fr_FR.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_fr_FR.properties (.../ApplicationResources_fr_FR.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -280,7 +280,7 @@ label.monitors = Enseignants/moniteurs label.authors = Auteurs label.group.managers = Gestionnaires de groupe -label.appadmins = Administ +label.sysadmins = Administ label.author.admins = Administrateurs des auteurs heading.users = Utilisateurs label.number.of.users = {0} utilisateurs Index: lams_admin/conf/language/lams/ApplicationResources_it_IT.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_it_IT.properties (.../ApplicationResources_it_IT.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_it_IT.properties (.../ApplicationResources_it_IT.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -143,7 +143,7 @@ sysadmin.headline =Sistema di Amministrazione admin.can.change.status =Il gruppo di Amministrazione pu\u00f2 cambiare lo stato del corso appadmin.maintain.external.servers =Gestione dei server integrati -admin.register.server.config.title =Configurazione del server +admin.register.server.sys.config.title =Configurazione del server admin.reset =Resetta admin.cancel =Cancella admin.search =Cerca @@ -342,7 +342,7 @@ config.ldap.monitor.map =Monitor Role Map config.ldap.org.field =Group Field Map label.monitors =Monitor -label.appadmins =Sysadmins +label.sysadmins =Sysadmins config.learner.screen.size =Configurazione schermata Learner config.monitor.screen.size =Configurazione schermata Monitor config.admin.screen.size =Configurazione schermata System Admin Index: lams_admin/conf/language/lams/ApplicationResources_ja_JP.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_ja_JP.properties (.../ApplicationResources_ja_JP.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_ja_JP.properties (.../ApplicationResources_ja_JP.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -60,7 +60,7 @@ label.group.admins =\u30b0\u30eb\u30fc\u30d7\u7ba1\u7406\u8005 config.ldap.encrypt.password.from.browser =\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u9001\u4fe1\u3059\u308b\u524d\u306b\u6697\u53f7\u5316\u3059\u308b error.numeric ={0} \u306f\u6570\u5b57\u306e\u307f\u53d7\u3051\u5165\u308c\u307e\u3059 -label.appadmins =\u30b7\u30b9\u30c6\u30e0\u7ba1\u7406\u8005 +label.sysadmins =\u30b7\u30b9\u30c6\u30e0\u7ba1\u7406\u8005 heading.users =\u30e6\u30fc\u30b6\u30fc label.group.managers =\u30b0\u30eb\u30fc\u30d7\u30de\u30cd\u30fc\u30b8\u30e3 heading.import.results =\u30a4\u30f3\u30dd\u30fc\u30c8\u306e\u7d50\u679c @@ -84,7 +84,7 @@ config.red5.server.url =\u30e1\u30c7\u30a3\u30a2 \u30b5\u30fc\u30d0\u30fc URL admin.register.directory.public =\u30d1\u30d6\u30ea\u30c3\u30af admin.register.directory.private =\u30d7\u30e9\u30a4\u30d9\u30fc\u30c8 -admin.register.server.config.title =\u30b5\u30fc\u30d0\u69cb\u6210 +admin.register.server.sys.config.title =\u30b5\u30fc\u30d0\u69cb\u6210 admin.register.server.stats.title =\u30b5\u30fc\u30d0\u306e\u7d71\u8a08 msg.cleanup.actual.space =\u30b5\u30fc\u30d0\u30fc\u306e\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306b\u3088\u3063\u3066\u306f\u3001\u5360\u6709\u3055\u308c\u308b\u5b9f\u969b\u306e\u30b5\u30a4\u30ba\u3068\u4e0a\u8a18\u3068\u304c\u7570\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002 label.can.join.joint.lessons =\u5171\u540c\u30ec\u30c3\u30b9\u30f3\u306b\u53c2\u52a0\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059 Index: lams_admin/conf/language/lams/ApplicationResources_ko_KR.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_ko_KR.properties (.../ApplicationResources_ko_KR.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_ko_KR.properties (.../ApplicationResources_ko_KR.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -57,7 +57,7 @@ admin.register.directory.public =\uacf5\uac1c admin.register.directory.private =\uac1c\uc778\uc801 admin.register.heading.title =\ub78c\uc2a4 \ucee4\ubba4\ub2c8\ud2f0\uc5d0 \ub2f9\uc2e0\uc758 \uc11c\ubc84\ub97c \ub4f1\ub85d\ud558\uc138\uc694. -admin.register.server.config.title =\uc11c\ubc84 \uc124\uc815 +admin.register.server.sys.config.title =\uc11c\ubc84 \uc124\uc815 admin.register.server.stats.title =\uc11c\ubc84 \ud1b5\uacc4 admin.register.server.config.url =\uc11c\ubc84 URL admin.register.server.config.version =\uc11c\ubc84 \ubc84\uc804 @@ -354,7 +354,7 @@ label.authors =\uc791\uc131\uc790 label.group.managers =\ubaa8\ub460 \uad00\ub9ac\uc790 label.group.admins =\ubaa8\ub460 \ucd1d\uad04\uad00\ub9ac\uc790 -label.appadmins =\uc2dc\uc2a4\ud15c\uad00\ub9ac\uc790 +label.sysadmins =\uc2dc\uc2a4\ud15c\uad00\ub9ac\uc790 label.author.admins =\uc791\uc131\uc790 \ucd1d\uad04\uad00\ub9ac\uc790 label.number.of.users ={0} \uc0ac\uc6a9\uc790 heading.potential.users =\uc7a0\uc7ac\uc801 \uc0ac\uc6a9\uc790 Index: lams_admin/conf/language/lams/ApplicationResources_mi_NZ.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_mi_NZ.properties (.../ApplicationResources_mi_NZ.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_mi_NZ.properties (.../ApplicationResources_mi_NZ.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -116,7 +116,7 @@ admin.register.directory.public =T\u016bmatanui admin.register.directory.private =T\u016bmataiti admin.register.heading.title =Rehitatia tou K\u014dpae Matua ki te hapori a LAMS -admin.register.server.config.title =Whakaritenga K\u014dpae Matua +admin.register.server.sys.config.title =Whakaritenga K\u014dpae Matua admin.register.server.stats.title =Tauanga K\u014dpae Matua admin.register.server.config.url =Wahitau K\u014dpae Matua admin.register.server.config.version =Putanga K\u014dpae Matua Index: lams_admin/conf/language/lams/ApplicationResources_nl_BE.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_nl_BE.properties (.../ApplicationResources_nl_BE.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_nl_BE.properties (.../ApplicationResources_nl_BE.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -219,7 +219,7 @@ admin.register.directory.public =Publiek admin.register.directory.private =Prive admin.register.heading.title =Registreer uw server bij de LAMS gemeenschap -admin.register.server.config.title =Server-configuratie +admin.register.server.sys.config.title =Server-configuratie admin.register.server.stats.title =Server-statistieken admin.register.server.config.url =Server-URL admin.register.server.config.version =Server-versie Index: lams_admin/conf/language/lams/ApplicationResources_no_NO.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_no_NO.properties (.../ApplicationResources_no_NO.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_no_NO.properties (.../ApplicationResources_no_NO.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -280,7 +280,7 @@ label.monitors = Forelesere label.authors = Forfattere label.group.managers = Kurs ledere -label.appadmins = Systemadministrasjon +label.sysadmins = Systemadministrasjon label.author.admins = Forfatter administrator heading.users = Brukere label.number.of.users = {0} brukere. @@ -425,7 +425,7 @@ sysadmin.login.request.ttl.enable = Legg inn tidsbegrensing for integrasjons forespørsler config.live.edit = Koble til aktive redigering sysadmin.extGroupsUrl = Eksterne grupper URL -server.config.title = Server konfigurering +server.sys.config.title = Server konfigurering server.monitor.title = Server kontroll modus user.course.title = Bruker og kurs konfigurering config.site.name = Steds navn Index: lams_admin/conf/language/lams/ApplicationResources_pl_PL.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_pl_PL.properties (.../ApplicationResources_pl_PL.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_pl_PL.properties (.../ApplicationResources_pl_PL.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -16,7 +16,7 @@ admin.register.directory.public =Publiczny admin.register.directory.private =Prywatny admin.register.heading.title =Zarejestruj serwer w spo\u0142eczno\u015bci LAMS -admin.register.server.config.title =Konfiguracja serwera +admin.register.server.sys.config.title =Konfiguracja serwera admin.register.server.stats.title =Statystyki serwera admin.register.server.config.url =URL serwera admin.register.server.config.version =Wersja serwera @@ -286,7 +286,7 @@ config.ldap.only.one.org =Tylko jedna grupa config.header.system =Konfiguracja systemu label.group.admins =Grupa administrator\u00f3w -label.appadmins =Administratorzy systemu +label.sysadmins =Administratorzy systemu label.monitors =Monitors error.numeric ={0} tylko znaki numeryczne label.learners =Studenci Index: lams_admin/conf/language/lams/ApplicationResources_pt_BR.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_pt_BR.properties (.../ApplicationResources_pt_BR.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_pt_BR.properties (.../ApplicationResources_pt_BR.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -183,7 +183,7 @@ admin.register.directory.public =P\u00fablico admin.register.directory.private =Privado admin.register.heading.title =Registre seu servidor com a comunidade LAMS -admin.register.server.config.title =Configura\u00e7\u00e3o do Servidor +admin.register.server.sys.config.title =Configura\u00e7\u00e3o do Servidor admin.register.server.stats.title =Estat\u00edsticas do servidor admin.register.server.config.url =URL do Servidor admin.register.server.config.version =Vers\u00e3o do Servidor @@ -337,7 +337,7 @@ label.authors =Autores label.group.managers =Gestores do curso label.group.admins =Administradores do Curso -label.appadmins =administradores de sistemas +label.sysadmins =administradores de sistemas label.author.admins =Autor Administradores heading.users =Usu\u00e1rios label.number.of.users ={0} usu\u00e1rios. Index: lams_admin/conf/language/lams/ApplicationResources_sv_SE.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_sv_SE.properties (.../ApplicationResources_sv_SE.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_sv_SE.properties (.../ApplicationResources_sv_SE.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -185,7 +185,7 @@ admin.register.directory.public =Offentlig admin.register.directory.private =Privat admin.register.heading.title =Registrera din server hos gemenskapen f\u00f6r LAMS -admin.register.server.config.title =Konfiguration f\u00f6r server +admin.register.server.sys.config.title =Konfiguration f\u00f6r server admin.register.server.stats.title =Statistik f\u00f6r server admin.register.server.config.url =URL till server admin.register.server.config.version =Version av server Index: lams_admin/conf/language/lams/ApplicationResources_tr_TR.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_tr_TR.properties (.../ApplicationResources_tr_TR.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_tr_TR.properties (.../ApplicationResources_tr_TR.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -162,7 +162,7 @@ sysadmin.job.list =\u0130\u015f listesi sysadmin.register.server =Sunucu kay\u0131t admin.course.add =Yeni Grup Olu\u015ftur -label.appadmins =Sistem y\u00f6netim +label.sysadmins =Sistem y\u00f6netim heading.users =Kullan\u0131c\u0131lar label.number.of.users ={0} kullan\u0131c\u0131 heading.potential.users =Potansiyel kullan\u0131c\u0131 @@ -188,7 +188,7 @@ admin.register.directory =Dizin admin.register.directory.public =Genel admin.register.directory.private =\u00d6zel -admin.register.server.config.title =Sunucu yap\u0131land\u0131rmas\u0131 +admin.register.server.sys.config.title =Sunucu yap\u0131land\u0131rmas\u0131 admin.register.server.stats.title =Sunucu istatistikler admin.register.server.config.url =Sunucu URL admin.register.server.config.version =Sunucu versiyon Index: lams_admin/conf/language/lams/ApplicationResources_vi_VN.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_vi_VN.properties (.../ApplicationResources_vi_VN.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_vi_VN.properties (.../ApplicationResources_vi_VN.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -185,7 +185,7 @@ admin.register.directory.public =C\u00f4ng c\u00f4ng admin.register.directory.private =Ri\u00eang t\u01b0 admin.register.heading.title =\u0110\u0103ng k\u00ed server c\u1ee7a b\u1ea1n v\u1edbi C\u1ed9ng \u0111\u1ed3ng LAMS -admin.register.server.config.title =C\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 +admin.register.server.sys.config.title =C\u1ea5u h\u00ecnh m\u00e1y ch\u1ee7 admin.register.server.stats.title =Th\u1ed1ng k\u00ea m\u00e1y ch\u1ee7 admin.register.server.config.url =URL m\u00e1y ch\u1ee7 admin.register.server.config.version =Phi\u00ean b\u1ea3n m\u00e1y ch\u1ee7 Index: lams_admin/conf/language/lams/ApplicationResources_zh_CN.properties =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/conf/language/lams/ApplicationResources_zh_CN.properties (.../ApplicationResources_zh_CN.properties) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/conf/language/lams/ApplicationResources_zh_CN.properties (.../ApplicationResources_zh_CN.properties) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -183,7 +183,7 @@ admin.register.directory.public =\u516c\u544a\u7684 admin.register.directory.private =\u79c1\u6709\u7684 admin.register.heading.title =\u5728LAMS\u793e\u533a\u6ce8\u518c\u60a8\u7684\u670d\u52a1\u5668 -admin.register.server.config.title =\u670d\u52a1\u5668\u914d\u7f6e +admin.register.server.sys.config.title =\u670d\u52a1\u5668\u914d\u7f6e admin.register.server.stats.title =\u670d\u52a1\u5668\u7edf\u8ba1 admin.register.server.config.url =\u670d\u52a1\u5668 URL admin.register.server.config.version =\u670d\u52a1\u5668\u7248\u672c @@ -279,7 +279,7 @@ label.authors =\u521b\u4f5c\u8005 label.group.managers =\u7ec4\u7ba1\u7406\u8005 label.group.admins =\u7ec4\u7ba1\u7406\u5458 -label.appadmins =\u7cfb\u7edf\u7ba1\u7406\u5458 +label.sysadmins =\u7cfb\u7edf\u7ba1\u7406\u5458 label.author.admins =\u8bfe\u7a0b\u7ba1\u7406\u5458 label.number.of.users ={0}\u4e2a\u7528\u6237 heading.potential.users =\u6f5c\u5728\u7684\u7528\u6237 Index: lams_admin/src/java/org/lamsfoundation/lams/admin/AdminConstants.java =================================================================== diff -u -r7cf4da03e4f448f3dd5d5abf8de533c56263e74c -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/AdminConstants.java (.../AdminConstants.java) (revision 7cf4da03e4f448f3dd5d5abf8de533c56263e74c) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/AdminConstants.java (.../AdminConstants.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -27,7 +27,8 @@ public static final String MODULE_NAME = "admin"; - public static final String START_CONFIG_LINKS = "server.config.title"; + public static final String START_SYSADMIN_CONFIG_LINKS = "server.sys.config.title"; + public static final String START_APPADMIN_CONFIG_LINKS = "server.app.config.title"; public static final String START_MONITOR_LINKS = "server.monitor.title"; public static final String START_COURSE_LINKS = "user.course.title"; public static final String START_WORKFLOW_AUTOMATION = "workflow.automation.title"; Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/AppAdminStartController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/AppAdminStartController.java (.../AppAdminStartController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/AppAdminStartController.java (.../AppAdminStartController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -54,21 +54,28 @@ @RequestMapping(path = "/appadminstart") public String execute(HttpServletRequest request) throws Exception { ArrayList groupedLinks = new ArrayList<>(); + ArrayList links = new ArrayList<>(); - if (request.isUserInRole(Role.APPADMIN)) { - ArrayList links = new ArrayList<>(); + if (request.isUserInRole(Role.SYSADMIN)) { + links = new ArrayList<>(); links.add(new LinkBean("config.do", "sysadmin.config.settings.edit")); + links.add(new LinkBean("extserver/serverlist.do", "appadmin.maintain.external.servers")); + links.add(new LinkBean("ltiConsumerManagement/start.do", "label.manage.tool.consumers")); + links.add(new LinkBean("ldap/start.do", "sysadmin.ldap.configuration")); + groupedLinks.add(new Object[] { AdminConstants.START_SYSADMIN_CONFIG_LINKS, links }); + } + + if (request.isUserInRole(Role.APPADMIN)) { + links = new ArrayList<>(); links.add(new LinkBean("timezonemanagement/start.do", "admin.timezone.title")); links.add(new LinkBean("loginmaintain.do", "appadmin.maintain.loginpage")); links.add(new LinkBean("signupManagement/start.do", "admin.signup.title")); - links.add(new LinkBean("extserver/serverlist.do", "appadmin.maintain.external.servers")); - links.add(new LinkBean("ltiConsumerManagement/start.do", "label.manage.tool.consumers")); links.add(new LinkBean("policyManagement/list.do", "admin.policies.title")); links.add(new LinkBean("toolcontentlist/start.do", "appadmin.tool.management")); links.add(new LinkBean("../outcome/outcomeManage.do", "admin.outcome.title")); links.add(new LinkBean("themeManagement/start.do", "admin.themes.title")); links.add(new LinkBean("sessionmaintain/list.do", "appadmin.maintain.session")); - groupedLinks.add(new Object[] { AdminConstants.START_CONFIG_LINKS, links }); + groupedLinks.add(new Object[] { AdminConstants.START_APPADMIN_CONFIG_LINKS, links }); links = new ArrayList<>(); links.add(new LinkBean("logevent/start.do", "label.event.log")); @@ -82,7 +89,6 @@ links.add(new LinkBean("importgroups.do", "appadmin.import.groups.title")); links.add(new LinkBean("importexcel.do", "admin.user.import")); links.add(new LinkBean("disabledmanage.do", "admin.list.disabled.users")); - links.add(new LinkBean("ldap/start.do", "sysadmin.ldap.configuration")); groupedLinks.add(new Object[] { AdminConstants.START_COURSE_LINKS, links }); // LKC-213 @@ -94,7 +100,6 @@ } } else if (userManagementService.isUserGlobalGroupManager()) { - ArrayList links = new ArrayList<>(); links.add(new LinkBean("usersearch.do", "admin.user.find")); links.add(new LinkBean("importgroups.do", "appadmin.import.groups.title")); links.add(new LinkBean("importexcel.do", "admin.user.import")); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ConfigController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ConfigController.java (.../ConfigController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ConfigController.java (.../ConfigController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -33,6 +33,7 @@ import org.lamsfoundation.lams.config.ConfigurationItem; import org.lamsfoundation.lams.logevent.LogEvent; import org.lamsfoundation.lams.logevent.service.ILogEventService; +import org.lamsfoundation.lams.security.ISecurityService; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.LanguageUtil; @@ -63,9 +64,14 @@ @Autowired private ILogEventService logEventService; + @Autowired + private ISecurityService securityService; + @RequestMapping(path = "/config") public String unspecified(@ModelAttribute ConfigForm configForm, HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "open server configuration panel", true); + request.setAttribute("config", configuration.arrangeItems(Configuration.ITEMS_NON_LDAP)); request.setAttribute("countryCodes", LanguageUtil.getCountryCodes(false)); Map smtpAuthTypes = new LinkedHashMap<>(); @@ -79,6 +85,7 @@ @RequestMapping(path = "/config/save", method = RequestMethod.POST) public String save(@ModelAttribute ConfigForm configForm, HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "save server configuration", true); String[] keys = configForm.getKey(); String[] values = configForm.getValue(); Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ExtServerManagementController.java =================================================================== diff -u -r1840d1ada2e0a7dc494e83ed0c183f6c98b6da92 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ExtServerManagementController.java (.../ExtServerManagementController.java) (revision 1840d1ada2e0a7dc494e83ed0c183f6c98b6da92) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/ExtServerManagementController.java (.../ExtServerManagementController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -27,15 +27,20 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang.StringUtils; import org.lamsfoundation.lams.admin.web.form.ExtServerForm; import org.lamsfoundation.lams.integration.ExtServer; import org.lamsfoundation.lams.integration.service.IIntegrationService; +import org.lamsfoundation.lams.security.ISecurityService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; @@ -58,11 +63,15 @@ @Autowired private IUserManagementService userManagementService; @Autowired + private ISecurityService securityService; + @Autowired @Qualifier("adminMessageService") private MessageService messageService; - + @RequestMapping(path = "/serverlist") public String serverlist(HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "open integrated server list", true); + List extServers = integrationService.getAllExtServers(); Collections.sort(extServers); request.setAttribute("servers", extServers); @@ -71,7 +80,8 @@ @RequestMapping(path = "/edit") public String edit(@ModelAttribute ExtServerForm extServerForm, HttpServletRequest request) throws Exception { - + securityService.isSysadmin(getUserId(), "open integrated server edit page", true); + Integer sid = WebUtil.readIntParam(request, "sid", true); if (sid != null) { ExtServer map = integrationService.getExtServer(sid); @@ -83,6 +93,7 @@ @RequestMapping(path = "/serversave") public String serversave(@ModelAttribute ExtServerForm extServerForm, BindingResult bindingResult, HttpServletRequest request, HttpServletResponse response) throws Exception { + securityService.isSysadmin(getUserId(), "save integrated server", true); MultiValueMap errorMap = new LinkedMultiValueMap<>(); @@ -106,7 +117,7 @@ errorMap.add("userinfoUrl", messageService.getMessage("error.required", new Object[] { messageService.getMessage("sysadmin.userinfoUrl") })); } - + Integer sid = extServerForm.getSid(); if (errorMap.isEmpty()) {//check duplication List listServer = userManagementService.findByProperty(ExtServer.class, "serverid", @@ -131,7 +142,7 @@ errorMap.add("prefix", messageService.getMessage("error.not.unique", new Object[] { messageService.getMessage("sysadmin.prefix") })); } else { - ExtServer map = (ExtServer) listPrefix.get(0); + ExtServer map = listPrefix.get(0); if (!map.getSid().equals(sid)) { errorMap.add("prefix", messageService.getMessage("error.not.unique", new Object[] { messageService.getMessage("sysadmin.prefix") })); @@ -161,6 +172,8 @@ @RequestMapping(path = "/disable", method = RequestMethod.POST) public String disable(HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "disable integrated server", true); + Integer sid = WebUtil.readIntParam(request, "sid", false); ExtServer map = integrationService.getExtServer(sid); map.setDisabled(true); @@ -170,6 +183,8 @@ @RequestMapping(path = "/enable", method = RequestMethod.POST) public String enable(HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "enable integrated server", true); + Integer sid = WebUtil.readIntParam(request, "sid", false); ExtServer map = integrationService.getExtServer(sid); map.setDisabled(false); @@ -179,9 +194,16 @@ @RequestMapping(path = "/delete", method = RequestMethod.POST) public String delete(HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "delete integrated server", true); + Integer sid = WebUtil.readIntParam(request, "sid", false); userManagementService.deleteById(ExtServer.class, sid); return "redirect:/extserver/serverlist.do"; } -} + private Integer getUserId() { + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getUserID() : null; + } +} \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LdapConfigController.java =================================================================== diff -u -r3de1d20c78d23234c11bc8bc7d3d1e1b19c9133d -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LdapConfigController.java (.../LdapConfigController.java) (revision 3de1d20c78d23234c11bc8bc7d3d1e1b19c9133d) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LdapConfigController.java (.../LdapConfigController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -30,15 +30,18 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.lamsfoundation.lams.admin.web.form.ConfigForm; +import org.lamsfoundation.lams.security.ISecurityService; import org.lamsfoundation.lams.usermanagement.AuthenticationMethod; import org.lamsfoundation.lams.usermanagement.dto.BulkUpdateResultDTO; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.ILdapService; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.usermanagement.service.LdapService; import org.lamsfoundation.lams.util.Configuration; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; @@ -52,19 +55,22 @@ @RequestMapping("/ldap") public class LdapConfigController { private static Logger log = Logger.getLogger(LdapConfigController.class); - + @Autowired private Configuration configurationService; @Autowired private LdapService ldapService; @Autowired private IUserManagementService userManagementService; @Autowired + private ISecurityService securityService; + @Autowired @Qualifier("adminMessageService") private MessageService messageService; @RequestMapping(path = "/start") public String execute(@ModelAttribute ConfigForm configForm, HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "open LDAP management panel", true); String action = WebUtil.readStrParam(request, "action", true); if (action != null) { @@ -89,6 +95,7 @@ @RequestMapping(path = "/sync") public String sync(HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "sync LDAP", true); String sessionId = SessionManager.getSession().getId(); Thread t = new Thread(new LdapSyncThread(sessionId)); @@ -101,6 +108,7 @@ @RequestMapping(path = "/waiting") public String waiting(HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "sync LDAP wait", true); request.setAttribute("wait", messageService.getMessage("msg.ldap.synchronise.wait")); @@ -109,6 +117,7 @@ @RequestMapping(path = "/results") public String results(HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "show LDAP sync results", true); HttpSession ss = SessionManager.getSession(); Object o = ss.getAttribute(ILdapService.SYNC_RESULTS); @@ -199,4 +208,10 @@ } } } + + private Integer getUserId() { + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getUserID() : null; + } } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LtiConsumerManagementController.java =================================================================== diff -u -r7808273ba3a006d130a995d8561b37ef54df712e -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LtiConsumerManagementController.java (.../LtiConsumerManagementController.java) (revision 7808273ba3a006d130a995d8561b37ef54df712e) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/LtiConsumerManagementController.java (.../LtiConsumerManagementController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -7,22 +7,27 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.lamsfoundation.lams.admin.web.form.LtiConsumerForm; import org.lamsfoundation.lams.integration.ExtServer; import org.lamsfoundation.lams.integration.service.IIntegrationService; +import org.lamsfoundation.lams.security.ISecurityService; import org.lamsfoundation.lams.timezone.Timezone; import org.lamsfoundation.lams.timezone.dto.TimezoneDTO; import org.lamsfoundation.lams.timezone.service.ITimezoneService; import org.lamsfoundation.lams.timezone.util.TimezoneIDComparator; import org.lamsfoundation.lams.usermanagement.SupportedLocale; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.LanguageUtil; import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; @@ -47,6 +52,8 @@ @Autowired private ITimezoneService timezoneService; @Autowired + private ISecurityService securityService; + @Autowired @Qualifier("adminMessageService") private MessageService messageService; @@ -55,6 +62,8 @@ */ @RequestMapping(path = "/start") public String start(HttpServletRequest request) { + securityService.isSysadmin(getUserId(), "open LTI consumer list", true); + List ltiConsumers = integrationService.getAllToolConsumers(); Collections.sort(ltiConsumers); request.setAttribute("ltiConsumers", ltiConsumers); @@ -67,6 +76,8 @@ */ @RequestMapping(path = "/edit") public String edit(@ModelAttribute LtiConsumerForm ltiConsumerForm, HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "open LTI consumer edit page", true); + Integer sid = WebUtil.readIntParam(request, "sid", true); // editing a tool consumer @@ -119,6 +130,8 @@ */ @RequestMapping(path = "/disable", method = RequestMethod.POST) public String disable(HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "disable LTI consumer", true); + Integer sid = WebUtil.readIntParam(request, "sid", true); boolean disable = WebUtil.readBooleanParam(request, "disable"); ExtServer ltiConsumer = integrationService.getExtServer(sid); @@ -133,6 +146,8 @@ */ @RequestMapping(path = "/delete", method = RequestMethod.POST) public String delete(HttpServletRequest request) throws Exception { + securityService.isSysadmin(getUserId(), "delete LTI consumer", true); + Integer sid = WebUtil.readIntParam(request, "sid", true); userManagementService.deleteById(ExtServer.class, sid); @@ -145,6 +160,8 @@ @RequestMapping(path = "/save", method = RequestMethod.POST) public String save(@ModelAttribute LtiConsumerForm ltiConsumerForm, HttpServletRequest request, HttpServletResponse response) throws Exception { + securityService.isSysadmin(getUserId(), "save LTI consumer", true); + MultiValueMap errorMap = new LinkedMultiValueMap<>(); if (StringUtils.trimToNull(ltiConsumerForm.getServerid()) == null) { @@ -226,4 +243,9 @@ } } -} + private Integer getUserId() { + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getUserID() : null; + } +} \ No newline at end of file Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/OrgManageController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/OrgManageController.java (.../OrgManageController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/OrgManageController.java (.../OrgManageController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -145,7 +145,7 @@ request.setAttribute("createGroup", request.isUserInRole(Role.APPADMIN) || userManagementService.isUserGlobalGroupManager()); request.setAttribute("editGroup", true); - request.setAttribute("manageGlobalRoles", request.isUserInRole(Role.APPADMIN)); + request.setAttribute("manageGlobalRoles", request.isUserInRole(Role.SYSADMIN)); return "organisation/list"; } Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserManageController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserManageController.java (.../UserManageController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserManageController.java (.../UserManageController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -98,8 +98,9 @@ : organisation; // check permission Integer rootOrgId = userManagementService.getRootOrganisation().getOrganisationId(); - if (request.isUserInRole(Role.APPADMIN) - || (userManagementService.isUserGlobalGroupManager() && !orgId.equals(rootOrgId))) { + if (request.isUserInRole(Role.SYSADMIN) + || ((request.isUserInRole(Role.SYSADMIN) || userManagementService.isUserGlobalGroupManager()) + && !orgId.equals(rootOrgId))) { userManageForm.setCourseAdminCanAddNewUsers(true); userManageForm.setCourseAdminCanBrowseAllUsers(true); userManageForm.setCanEditRole(true); @@ -130,6 +131,7 @@ HashMap roleCount = new HashMap<>(); if (orgId.equals(rootOrgId)) { roleCount.put(Role.APPADMIN, Role.ROLE_APPADMIN); + roleCount.put(Role.SYSADMIN, Role.ROLE_SYSADMIN); roleCount.put(Role.GROUP_MANAGER, Role.ROLE_GROUP_MANAGER); } else { roleCount.put(Role.LEARNER, Role.ROLE_LEARNER); @@ -144,8 +146,8 @@ // count users in the org // TODO use hql that does a count instead of getting whole objects - Integer numUsers = Integer.valueOf(userManagementService.getUsersFromOrganisation(orgId).size()); - args[0] = numUsers.toString(); + int numUsers = userManagementService.getUsersFromOrganisation(orgId).size(); + args[0] = Integer.toString(numUsers); request.setAttribute("numUsers", messageService.getMessage("label.users.in.group", args)); return "userlist"; Index: lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java (.../UserRolesSaveController.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/src/java/org/lamsfoundation/lams/admin/web/controller/UserRolesSaveController.java (.../UserRolesSaveController.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -29,14 +29,19 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.lamsfoundation.lams.admin.web.form.UserRolesForm; +import org.lamsfoundation.lams.security.ISecurityService; import org.lamsfoundation.lams.usermanagement.Organisation; import org.lamsfoundation.lams.usermanagement.Role; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.service.IUserManagementService; import org.lamsfoundation.lams.util.MessageService; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Controller; @@ -52,29 +57,36 @@ @Controller public class UserRolesSaveController { private static Logger log = Logger.getLogger(UserRolesSaveController.class); - + @Autowired private IUserManagementService userManagementService; @Autowired + private ISecurityService securityService; + @Autowired @Qualifier("adminMessageService") private MessageService messageService; - + private static List rolelist; @RequestMapping(path = "/userrolessave", method = RequestMethod.POST) public String execute(@ModelAttribute UserRolesForm userRolesForm, HttpServletRequest request, HttpServletResponse response) throws Exception { + + Integer orgId = userRolesForm.getOrgId(); + Integer rootOrgId = userManagementService.getRootOrganisation().getOrganisationId(); + if (orgId.equals(rootOrgId)) { + securityService.isSysadmin(getUserId(), "save global roles", true); + } + if (rolelist == null) { rolelist = userManagementService.findAll(Role.class); Collections.sort(rolelist); } - - Integer orgId = userRolesForm.getOrgId(); Integer userId = userRolesForm.getUserId(); String[] roles = userRolesForm.getRoles(); request.setAttribute("org", orgId); - + if (log.isDebugEnabled()) { String numRoles = roles != null ? Integer.toString(roles.length) : "0"; log.debug(new StringBuilder("userId: ").append(userId).append(", orgId: ").append(orgId) @@ -89,8 +101,8 @@ if (roles == null || roles.length < 1) { errorMap.add("roles", messageService.getMessage("error.roles.empty")); request.setAttribute("errorMap", errorMap); - request.setAttribute("rolelist", - userManagementService.filterRoles(rolelist, request.isUserInRole(Role.APPADMIN), org.getOrganisationType())); + request.setAttribute("rolelist", userManagementService.filterRoles(rolelist, + request.isUserInRole(Role.APPADMIN), org.getOrganisationType())); request.setAttribute("login", user.getLogin()); request.setAttribute("fullName", user.getFullName()); return "forward:/userroles.do"; @@ -101,4 +113,9 @@ return "redirect:/usermanage.do?org=" + orgId; } -} + private Integer getUserId() { + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + return user != null ? user.getUserID() : null; + } +} \ No newline at end of file Index: lams_admin/web/userlist.jsp =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_admin/web/userlist.jsp (.../userlist.jsp) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_admin/web/userlist.jsp (.../userlist.jsp) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -116,6 +116,10 @@ + + + + Index: lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20220321.sql =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20220321.sql (.../patch20220321.sql) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_common/src/java/org/lamsfoundation/lams/dbupdates/patch20220321.sql (.../patch20220321.sql) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -3,10 +3,14 @@ SET FOREIGN_KEY_CHECKS=0; -- Put all sql statements below here ---LDEV-5302 Rename SYSADMIN to APPADMIN +--LDEV-5302 Rename SYSADMIN to APPADMIN, add new SYSADMIN role UPDATE lams_role SET name = 'APPADMIN', description = 'LAMS Application Adminstrator' WHERE name = 'SYSADMIN'; +INSERT INTO lams_role(role_id, name, description, create_date) VALUES (7, 'SYSADMIN', 'LAMS System Adminstrator', NOW()); +INSERT INTO lams_user_organisation_role SELECT NULL, user_organisation_id, 7 FROM lams_user_organisation_role WHERE role_id = 1; + + -- Put all sql statements above here -- If there were no errors, commit and restore autocommit to on Index: lams_common/src/java/org/lamsfoundation/lams/security/ISecurityDAO.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_common/src/java/org/lamsfoundation/lams/security/ISecurityDAO.java (.../ISecurityDAO.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_common/src/java/org/lamsfoundation/lams/security/ISecurityDAO.java (.../ISecurityDAO.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -20,7 +20,6 @@ * **************************************************************** */ - package org.lamsfoundation.lams.security; import java.io.Serializable; @@ -38,4 +37,6 @@ boolean isLessonMonitor(Long lessonId, Integer userId, boolean ownerAccepted); boolean isAppadmin(Integer userId); + + boolean isSysadmin(Integer userId); } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/security/ISecurityService.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_common/src/java/org/lamsfoundation/lams/security/ISecurityService.java (.../ISecurityService.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_common/src/java/org/lamsfoundation/lams/security/ISecurityService.java (.../ISecurityService.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -38,10 +38,12 @@ /** * Checks if the user is a monitor or owner of the given lesson, or a group manager of the organisation. - * + * * @param lessonId * @param userId - * @param action describes action that was requested and is used for logging. If this value is null, no logging will be done. + * @param action + * describes action that was requested and is used for logging. If this value is null, no logging will be + * done. * @param escalate */ boolean isLessonMonitor(Long lessonId, Integer userId, String action, boolean escalate) throws SecurityException; @@ -63,6 +65,11 @@ boolean isAppadmin(Integer userId, String action, boolean escalate); /** + * Checks if the user has a global role of APPADMIN. + */ + boolean isSysadmin(Integer userId, String action, boolean escalate); + + /** * Checks if the user has any of the given roles in the given organisation. If GROUP_MANAGER and/or GROUP_ADMIN are * given for class type organisation, their parent organisations are checked. */ Index: lams_common/src/java/org/lamsfoundation/lams/security/SecurityDAO.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_common/src/java/org/lamsfoundation/lams/security/SecurityDAO.java (.../SecurityDAO.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_common/src/java/org/lamsfoundation/lams/security/SecurityDAO.java (.../SecurityDAO.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -62,10 +62,12 @@ /** * Checks if user has a global role of APPADMIN. */ - private static final String CHECK_APPADMIN = "FROM " + UserOrganisation.class.getName() + private static final String CHECK_ADMIN = "FROM " + UserOrganisation.class.getName() + " AS userOrganisation INNER JOIN userOrganisation.userOrganisationRoles AS userOrganisationRole " + "WHERE userOrganisation.organisation.organisationType.organisationTypeId = 1 AND userOrganisation.user.userId = ? " - + "AND userOrganisationRole.role.name = '" + Role.APPADMIN + "'"; + + "AND userOrganisationRole.role.name = "; + private static final String CHECK_APPADMIN = CHECK_ADMIN + "'" + Role.APPADMIN + "'"; + private static final String CHECK_SYSADMIN = CHECK_ADMIN + "'" + Role.SYSADMIN + "'"; @Override @SuppressWarnings("rawtypes") @@ -118,4 +120,9 @@ public boolean isAppadmin(Integer userId) { return !doFindCacheable(SecurityDAO.CHECK_APPADMIN, new Object[] { userId }).isEmpty(); } + + @Override + public boolean isSysadmin(Integer userId) { + return !doFindCacheable(SecurityDAO.CHECK_SYSADMIN, new Object[] { userId }).isEmpty(); + } } \ No newline at end of file Index: lams_common/src/java/org/lamsfoundation/lams/security/SecurityService.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_common/src/java/org/lamsfoundation/lams/security/SecurityService.java (.../SecurityService.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_common/src/java/org/lamsfoundation/lams/security/SecurityService.java (.../SecurityService.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -309,6 +309,29 @@ } @Override + public boolean isSysadmin(Integer userId, String action, boolean escalate) { + if (userId == null) { + String error = "Missing user ID when checking if is sysadmin and can \"" + action + "\""; + SecurityService.log.error(error); + logEventService.logEvent(LogEvent.TYPE_ROLE_FAILURE, userId, userId, null, null, error); + throw new SecurityException(error); + } + + if (!securityDAO.isSysadmin(userId)) { + String error = "User " + userId + " is not sysadmin and can not \"" + action + "\""; + SecurityService.log.debug(error); + logEventService.logEvent(LogEvent.TYPE_ROLE_FAILURE, userId, userId, null, null, error); + if (escalate) { + throw new SecurityException(error); + } else { + return false; + } + } + + return true; + } + + @Override public boolean isGroupMonitor(Integer orgId, Integer userId, String action, boolean escalate) throws SecurityException { return hasOrgRole(orgId, userId, SecurityService.GROUP_MONITOR_ROLES, action, escalate); Index: lams_common/src/java/org/lamsfoundation/lams/usermanagement/Role.java =================================================================== diff -u -r5b9f590b301c276f8df06b30c26981b0eb634e69 -rdd60c645ebe32ff15180cff47caa583cb41b7ee1 --- lams_common/src/java/org/lamsfoundation/lams/usermanagement/Role.java (.../Role.java) (revision 5b9f590b301c276f8df06b30c26981b0eb634e69) +++ lams_common/src/java/org/lamsfoundation/lams/usermanagement/Role.java (.../Role.java) (revision dd60c645ebe32ff15180cff47caa583cb41b7ee1) @@ -53,6 +53,8 @@ public static final String APPADMIN = "APPADMIN"; + public static final String SYSADMIN = "SYSADMIN"; + /** * Added by Manpreet Minhas * final static variables indicating the various roles available @@ -65,6 +67,7 @@ public static final Integer ROLE_MONITOR = 4; public static final Integer ROLE_LEARNER = 5; // public static final Integer ROLE_GROUP_ADMIN = 6; + public static final Integer ROLE_SYSADMIN = 7; /***********************************************************/ @Id @@ -78,9 +81,6 @@ @Column private String description; - public Role() { - } - public Integer getRoleId() { return this.roleId; }
:
: