Revision 73119f8a
Personnalisation des managers.
Permet de personnaliser le nom (avec la possibilité d'en définir
plusieurs) des groupes d'utilisateurs privilégiés.
Ce changement évite d'imposer un nom de groupe d'utilisateurs
particulier contenant les administrateurs du parc. Il est en particulier
utile lorsque l'authentification est réalisée via une source externe
indépendante de Vigilo (ex: annuaire LDAP).
Change-Id: I5ec1514a488d946ba53c661e840ff21e23eb63af
Reviewed-on: https://vigilo-dev.si.c-s.fr/review/1331
Tested-by: Build system <qa@vigilo-dev.si.c-s.fr>
Reviewed-by: Vincent QUEMENER <vincent.quemener@c-s.fr>
deployment/settings.ini.in | ||
---|---|---|
72 | 72 |
; de l'authentification. |
73 | 73 |
auth.config = %(here)s/who.ini |
74 | 74 |
|
75 |
; Liste des noms des groupes d'utilisateurs privilégiés, |
|
76 |
; séparés par des virgules. |
|
77 |
; Par défaut : "managers" |
|
78 |
admin_groups = managers |
|
79 |
|
|
75 | 80 |
; |
76 | 81 |
; 3 - Configuration de l'interface. |
77 | 82 |
; |
development.ini | ||
---|---|---|
118 | 118 |
; Par défaut : 80 |
119 | 119 |
app_port.nagios = 80 |
120 | 120 |
|
121 |
; Liste des noms des groupes d'utilisateurs privilégiés, |
|
122 |
; séparés par des virgules. |
|
123 |
; Par défaut : "managers" |
|
124 |
admin_groups = managers |
|
125 |
|
|
121 | 126 |
; Doit être laissé à true pour obtenir une application complète. |
122 | 127 |
full_stack = true |
123 | 128 |
|
vigiboard/controllers/plugins/details.py | ||
---|---|---|
89 | 89 |
# On détermine les cartes auxquelles cet utilisateur a accès. |
90 | 90 |
user_maps = [] |
91 | 91 |
max_maps = int(config['max_maps']) |
92 |
is_manager = in_group('managers').is_met(request.environ)
|
|
92 |
is_manager = config.is_manager.is_met(request.environ)
|
|
93 | 93 |
if max_maps != 0 and (is_manager or |
94 | 94 |
has_permission('vigimap-access').is_met(request.environ)): |
95 | 95 |
items = DBSession.query( |
vigiboard/controllers/root.py | ||
---|---|---|
35 | 35 |
from sqlalchemy.sql import func |
36 | 36 |
from sqlalchemy.orm import aliased |
37 | 37 |
from sqlalchemy.sql.expression import or_ |
38 |
from repoze.what.predicates import Any, All, in_group, \ |
|
39 |
has_permission, not_anonymous, \ |
|
40 |
NotAuthorizedError |
|
38 |
from repoze.what.predicates import Any, All, NotAuthorizedError, \ |
|
39 |
has_permission, not_anonymous |
|
41 | 40 |
from formencode import schema |
42 | 41 |
|
43 | 42 |
from vigilo.models.session import DBSession |
... | ... | |
95 | 94 |
# ou appartenir au groupe "managers" pour accéder à VigiBoard. |
96 | 95 |
access_restriction = All( |
97 | 96 |
not_anonymous(msg=l_("You need to be authenticated")), |
98 |
Any(in_group('managers'),
|
|
97 |
Any(config.is_manager,
|
|
99 | 98 |
has_permission('vigiboard-access'), |
100 | 99 |
msg=l_("You don't have access to VigiBoard")) |
101 | 100 |
) |
... | ... | |
578 | 577 |
@require( |
579 | 578 |
All( |
580 | 579 |
not_anonymous(msg=l_("You need to be authenticated")), |
581 |
Any(in_group('managers'),
|
|
580 |
Any(config.is_manager,
|
|
582 | 581 |
has_permission('vigiboard-update'), |
583 | 582 |
msg=l_("You don't have write access to VigiBoard")) |
584 | 583 |
)) |
... | ... | |
642 | 641 |
|
643 | 642 |
if ack == u'Forced': |
644 | 643 |
condition = Any( |
645 |
in_group('managers'),
|
|
644 |
config.is_manager,
|
|
646 | 645 |
has_permission('vigiboard-admin'), |
647 | 646 |
msg=l_("You don't have administrative access " |
648 | 647 |
"to VigiBoard")) |
... | ... | |
816 | 815 |
|
817 | 816 |
# Filtrage des évènements en fonction des permissions de |
818 | 817 |
# l'utilisateur (s'il n'appartient pas au groupe 'managers') |
819 |
is_manager = in_group('managers').is_met(request.environ) |
|
820 |
if not is_manager: |
|
818 |
if not config.is_manager.is_met(request.environ): |
|
821 | 819 |
user = get_current_user() |
822 | 820 |
|
823 | 821 |
events = events.join( |
... | ... | |
926 | 924 |
|
927 | 925 |
# Si l'utilisateur n'appartient pas au groupe 'managers', |
928 | 926 |
# on filtre les résultats en fonction de ses permissions. |
929 |
is_manager = in_group('managers').is_met(request.environ) |
|
930 |
if not is_manager: |
|
927 |
if not config.is_manager.is_met(request.environ): |
|
931 | 928 |
user = get_current_user() |
932 | 929 |
GroupHierarchy_aliased = aliased(GroupHierarchy, |
933 | 930 |
name='GroupHierarchy_aliased') |
... | ... | |
1000 | 997 |
# On filtre ces groupes racines afin de ne |
1001 | 998 |
# retourner que ceux auquels l'utilisateur a accès |
1002 | 999 |
user = get_current_user() |
1003 |
is_manager = in_group('managers').is_met(request.environ) |
|
1004 |
if not is_manager: |
|
1005 |
|
|
1000 |
if not config.is_manager.is_met(request.environ): |
|
1006 | 1001 |
root_groups = root_groups.join( |
1007 | 1002 |
(GroupHierarchy, |
1008 | 1003 |
GroupHierarchy.idparent == SupItemGroup.idgroup), |
vigiboard/controllers/vigiboardrequest.py | ||
---|---|---|
25 | 25 |
from tg import config, tmpl_context, request, url |
26 | 26 |
from pylons.i18n import ugettext as _ |
27 | 27 |
from paste.deploy.converters import asbool |
28 |
from repoze.what.predicates import in_group |
|
29 | 28 |
|
30 | 29 |
from sqlalchemy import not_, and_, asc, desc |
31 | 30 |
from sqlalchemy.sql.expression import null as expr_null, union_all |
... | ... | |
95 | 94 |
StateName.statename, |
96 | 95 |
] |
97 | 96 |
|
98 |
|
|
99 | 97 |
self.req = DBSession |
100 | 98 |
self.plugin = [] |
101 | 99 |
self.events = [] |
102 | 100 |
|
103 |
|
|
104 |
is_manager = in_group('managers').is_met(request.environ) |
|
105 |
|
|
106 |
# Si l'utilisateur fait partie du groupe 'managers', |
|
107 |
# il a accès à tous les hôtes/services sans restriction. |
|
108 |
if is_manager: |
|
101 |
# Si l'utilisateur est privilégié, il a accès |
|
102 |
# à tous les hôtes/services sans restriction. |
|
103 |
if config.is_manager.is_met(request.environ): |
|
109 | 104 |
# Sélection de tous les services de la BDD. |
110 | 105 |
lls_query = DBSession.query( |
111 | 106 |
LowLevelService.idservice.label("idsupitem"), |
Also available in: Unified diff