Commit 7b46b5228543f33d71581201208c708179b4934c

Authored by Adley
1 parent aa3fa2d6
Exists in master

Correção de permissões, de templates e menssagens

wscacicneo/__init__.py
@@ -5,6 +5,7 @@ from wscacicneo import config @@ -5,6 +5,7 @@ from wscacicneo import config
5 from pyramid.authentication import AuthTktAuthenticationPolicy 5 from pyramid.authentication import AuthTktAuthenticationPolicy
6 from pyramid.authorization import ACLAuthorizationPolicy 6 from pyramid.authorization import ACLAuthorizationPolicy
7 from pyramid.config import Configurator 7 from pyramid.config import Configurator
  8 +from pyramid.httpexceptions import HTTPNotFound
8 9
9 10
10 11
@@ -31,7 +32,6 @@ def main(global_config, **settings): @@ -31,7 +32,6 @@ def main(global_config, **settings):
31 32
32 # Rotas Básicas 33 # Rotas Básicas
33 cfg.add_route('home', 'home') 34 cfg.add_route('home', 'home')
34 - cfg.add_route('error', 'error')  
35 cfg.add_route('notifications', 'notifications') 35 cfg.add_route('notifications', 'notifications')
36 cfg.add_route('orgao', 'orgao/cadastro') 36 cfg.add_route('orgao', 'orgao/cadastro')
37 37
wscacicneo/models.py
@@ -65,7 +65,7 @@ so = Table('so', Base.metadata, @@ -65,7 +65,7 @@ so = Table('so', Base.metadata,
65 mapper(SistemaOperacional, so) 65 mapper(SistemaOperacional, so)
66 66
67 class RootFactory(object): 67 class RootFactory(object):
68 - __acl__ = [ (Allow, Everyone, 'view'),  
69 - (Allow, 'Administrador', 'edit') ] 68 + __acl__ = [ (Allow, Everyone, 'user'),
  69 + (Allow, 'Administrador', 'admin') ]
70 def __init__(self, request): 70 def __init__(self, request):
71 pass 71 pass
72 \ No newline at end of file 72 \ No newline at end of file
wscacicneo/templates/editarorgao.pt
@@ -105,8 +105,8 @@ @@ -105,8 +105,8 @@
105 type: "PUT", 105 type: "PUT",
106 url: "${request.route_url('root')}put_orgao", 106 url: "${request.route_url('root')}put_orgao",
107 data: data, 107 data: data,
108 - success: function(){ alert('Cadastro realizado com sucesso') },  
109 - error: function(){ alert('Erro ao realizar o cadastro. Todos os campos são obrigatórios') }, 108 + success: function(){ alert('Alteração realizado com sucesso') },
  109 + error: function(){ alert('Erro ao alterar o orgão. Todos os campos são obrigatórios') },
110 }); 110 });
111 }); 111 });
112 </script> 112 </script>
wscacicneo/templates/editaruser.pt
@@ -59,7 +59,7 @@ @@ -59,7 +59,7 @@
59 <div class="form-group"> 59 <div class="form-group">
60 <label class="col-lg-2 control-label">Senha</label> 60 <label class="col-lg-2 control-label">Senha</label>
61 <div class="col-lg-5"> 61 <div class="col-lg-5">
62 - <input type="text" id="senha" value="${senha}" class="form-control" placeholder="Informe novamente sua senha"> 62 + <input type="text" id="senha" class="form-control" placeholder="Informe novamente sua senha">
63 </div> 63 </div>
64 </div><div class="form-group"> 64 </div><div class="form-group">
65 <label class="col-lg-2 control-label">Confirmar Senha</label> 65 <label class="col-lg-2 control-label">Confirmar Senha</label>
@@ -114,16 +114,30 @@ @@ -114,16 +114,30 @@
114 'permissao': permissao, 114 'permissao': permissao,
115 'senha': senha 115 'senha': senha
116 } 116 }
117 - if (data.email.indexOf("gov.br") > -1 == false){  
118 - alert('Somente é permitido cadastro de e-mails institucionais'); 117 + var emailCorreto = 0;
  118 + var senhaConfere = 0;
  119 + if (data.email.indexOf("gov.br") > -1 == true){
  120 + emailCorreto = 1;
  121 + }
  122 + if(senha.value == confirmarsenha.value && senha.value != "" ){
  123 + senhaConfere = 1;
  124 + }
  125 + if (emailCorreto == 0 || senhaConfere == 0){
  126 + if(emailCorreto == 0){
  127 + setTimeout(function() {noty({text: 'Erro: O campo "E-Mail" deve ser preenchido por um e-mail institucional',layout:'topRight',type:'error',timeout:5000});}, 100);
  128 + }
  129 + if(senhaConfere == 0){
  130 + setTimeout(function() {noty({text: 'Erro: O campo "Senha" e "Confirmar Senha" estão diferentes ou em branco',layout:'topRight',type:'error',timeout:5000});}, 100);
  131 + }
119 }else{ 132 }else{
120 - $.ajax({  
121 - type: "PUT",  
122 - url: "${request.route_url('root')}put_user",  
123 - data: data,  
124 - success: function(){ alert('sucesso') },  
125 - error: function(){ alert('erro') },  
126 - });} 133 + $.ajax({
  134 + type: "PUT",
  135 + url: "${request.route_url('root')}put_user",
  136 + data: data,
  137 + success: function(){ alert('Alteração realizado com sucesso') },
  138 + error: function(){ alert('Erro ao Alterar do usuário. Todos os campos são obrigatórios') },
  139 + });
  140 + }
127 }); 141 });
128 </script> 142 </script>
129 </metal:content> 143 </metal:content>
wscacicneo/templates/home.pt
1 <metal:main use-macro="load: master.pt"> 1 <metal:main use-macro="load: master.pt">
2 <metal:content fill-slot="conteudo"> 2 <metal:content fill-slot="conteudo">
3 <div> 3 <div>
4 - <p><h3 align="center">Sistema Super-Gerente</h3></p> 4 + <p><h2 align="center">Sistema Super-Gerente</h2></p>
  5 + <br>
  6 + <p><h3 align="center"><a href="${request.route_url('root')}login"> Faça Login </a></h3></p>
5 </div> 7 </div>
6 </metal:content> 8 </metal:content>
7 </metal:main> 9 </metal:main>
wscacicneo/templates/list_user.pt
@@ -24,8 +24,7 @@ @@ -24,8 +24,7 @@
24 <tr> 24 <tr>
25 <th>Nome</th> 25 <th>Nome</th>
26 <th>Matricula</th> 26 <th>Matricula</th>
27 - <th>Cargo</th>  
28 - <th>Setor</th> 27 + <th>E-mail</th>
29 <th>Orgão</th> 28 <th>Orgão</th>
30 <th>Permissão</th> 29 <th>Permissão</th>
31 <th>Opções</th> 30 <th>Opções</th>
@@ -35,14 +34,12 @@ @@ -35,14 +34,12 @@
35 <tr tal:repeat="doc user_doc"> 34 <tr tal:repeat="doc user_doc">
36 <td>${doc.nome}</td> 35 <td>${doc.nome}</td>
37 <td>${doc.matricula}</td> 36 <td>${doc.matricula}</td>
38 - <td>${doc.cargo}</td>  
39 - <td>${doc.setor}</td> 37 + <td>${doc.email}</td>
40 <td>${doc.orgao}</td> 38 <td>${doc.orgao}</td>
41 <td>${doc.permissao}</td> 39 <td>${doc.permissao}</td>
42 <td> 40 <td>
43 - <a class="btn btn-xs btn-success"><i class="fa fa-check"></i></a>  
44 - <a href="${request.route_url('root')}usuario/editar/${doc.matricula}" class="btn btn-xs btn-warning"><i class="fa fa-pencil"></i></a>  
45 - <a href="${request.route_url('root')}usuario/delete/${doc.matricula}" class="btn btn-xs btn-danger"><i class="fa fa-times"></i></a> 41 + <a href="${request.route_url('root')}usuario/editar/${doc.matricula}" class="btn btn-xs btn-warning" title="Editar"><i class="fa fa-pencil"></i></a>
  42 + <a href="${request.route_url('root')}usuario/delete/${doc.matricula}" class="btn btn-xs btn-danger" title="Apagar"><i class="fa fa-times"></i></a>
46 </td> 43 </td>
47 </tr> 44 </tr>
48 </tbody> 45 </tbody>
wscacicneo/templates/master.pt
@@ -96,7 +96,7 @@ @@ -96,7 +96,7 @@
96 96
97 <!-- Page heading --> 97 <!-- Page heading -->
98 <div class="page-head"> 98 <div class="page-head">
99 - <h2 class="pull-left"><i class="fa fa-home"></i> ${request.path}</h2> 99 + <h2 class="pull-left"><i class="fa fa-home"></i> Você está em: ${request.path}</h2>
100 100
101 101
102 <div class="clearfix"></div> 102 <div class="clearfix"></div>
wscacicneo/views.py
1 import requests 1 import requests
2 import json 2 import json
3 from pyramid.response import Response 3 from pyramid.response import Response
4 -from pyramid.httpexceptions import HTTPFound 4 +from pyramid.httpexceptions import HTTPFound, HTTPNotFound
5 from pyramid.view import view_config 5 from pyramid.view import view_config
6 from sqlalchemy.orm import sessionmaker 6 from sqlalchemy.orm import sessionmaker
7 from sqlalchemy import create_engine, MetaData 7 from sqlalchemy import create_engine, MetaData
@@ -50,16 +50,12 @@ def root(request): @@ -50,16 +50,12 @@ def root(request):
50 return {'project': 'WSCacicNeo'} 50 return {'project': 'WSCacicNeo'}
51 51
52 # Views básicas 52 # Views básicas
53 -@view_config(route_name='home', renderer='templates/home.pt') 53 +@view_config(route_name='home', renderer='templates/home.pt', permission="user")
54 def home(request): 54 def home(request):
55 return {'project': 'WSCacicNeo'} 55 return {'project': 'WSCacicNeo'}
56 56
57 -@view_config(route_name='error', renderer='templates/error.pt')  
58 -def error(request):  
59 - return {'project': 'WSCacicNeo'}  
60 -  
61 # Lista de Notificação 57 # Lista de Notificação
62 -@view_config(route_name='list_notify', renderer='templates/list_notify.pt') 58 +@view_config(route_name='list_notify', renderer='templates/list_notify.pt', permission="admin")
63 def list_notify(request): 59 def list_notify(request):
64 notify_obj = Notify( 60 notify_obj = Notify(
65 orgao = 'deasdsd', 61 orgao = 'deasdsd',
@@ -72,11 +68,11 @@ def list_notify(request): @@ -72,11 +68,11 @@ def list_notify(request):
72 return {'doc': doc} 68 return {'doc': doc}
73 69
74 70
75 -@view_config(route_name='notify', renderer='templates/notify_coleta.pt') 71 +@view_config(route_name='notify', renderer='templates/notify_coleta.pt', permission="admin")
76 def notify(request): 72 def notify(request):
77 return {'project': 'WSCacicNeo'} 73 return {'project': 'WSCacicNeo'}
78 74
79 -@view_config(route_name='post_notify') 75 +@view_config(route_name='post_notify', permission="admin")
80 def post_notify(request): 76 def post_notify(request):
81 requests = request.params 77 requests = request.params
82 notify_obj = Notify( 78 notify_obj = Notify(
@@ -89,11 +85,11 @@ def post_notify(request): @@ -89,11 +85,11 @@ def post_notify(request):
89 return Response(str(results)) 85 return Response(str(results))
90 86
91 # Views de Orgão 87 # Views de Orgão
92 -@view_config(route_name='orgao', renderer='templates/orgao.pt') 88 +@view_config(route_name='orgao', renderer='templates/orgao.pt', permission="admin")
93 def orgao(request): 89 def orgao(request):
94 return {'project': 'WSCacicNeo'} 90 return {'project': 'WSCacicNeo'}
95 91
96 -@view_config(route_name='listorgao', renderer='templates/list_orgao.pt') 92 +@view_config(route_name='listorgao', renderer='templates/list_orgao.pt', permission="user")
97 def listorgao(request): 93 def listorgao(request):
98 orgao_obj = Orgao( 94 orgao_obj = Orgao(
99 nome = 'sahuds', 95 nome = 'sahuds',
@@ -108,7 +104,7 @@ def listorgao(request): @@ -108,7 +104,7 @@ def listorgao(request):
108 search = orgao_obj.search_list_orgaos() 104 search = orgao_obj.search_list_orgaos()
109 return {'orgao_doc': search.results} 105 return {'orgao_doc': search.results}
110 106
111 -@view_config(route_name='editorgao', renderer='templates/editarorgao.pt') 107 +@view_config(route_name='editorgao', renderer='templates/editarorgao.pt', permission="admin")
112 def editorgao(request): 108 def editorgao(request):
113 sigla = request.matchdict['sigla'] 109 sigla = request.matchdict['sigla']
114 orgao_obj = Orgao( 110 orgao_obj = Orgao(
@@ -133,7 +129,7 @@ def editorgao(request): @@ -133,7 +129,7 @@ def editorgao(request):
133 'url' : search.results[0].url 129 'url' : search.results[0].url
134 } 130 }
135 131
136 -@view_config(route_name='post_orgao') 132 +@view_config(route_name='post_orgao', permission="admin")
137 def post_orgao(request): 133 def post_orgao(request):
138 """ 134 """
139 Post doc órgãos 135 Post doc órgãos
@@ -156,7 +152,7 @@ def post_orgao(request): @@ -156,7 +152,7 @@ def post_orgao(request):
156 152
157 return Response(str(id_doc)) 153 return Response(str(id_doc))
158 154
159 -@view_config(route_name='put_orgao') 155 +@view_config(route_name='put_orgao', permission="admin")
160 def put_orgao(request): 156 def put_orgao(request):
161 """ 157 """
162 Edita um doc apartir do id 158 Edita um doc apartir do id
@@ -190,7 +186,7 @@ def put_orgao(request): @@ -190,7 +186,7 @@ def put_orgao(request):
190 186
191 return Response(edit) 187 return Response(edit)
192 188
193 -@view_config(route_name='delete_orgao') 189 +@view_config(route_name='delete_orgao', permission="admin")
194 def delete_orgao(request): 190 def delete_orgao(request):
195 """ 191 """
196 Deleta doc apartir do id 192 Deleta doc apartir do id
@@ -214,7 +210,7 @@ def delete_orgao(request): @@ -214,7 +210,7 @@ def delete_orgao(request):
214 return Response(delete) 210 return Response(delete)
215 211
216 # Views de Favoritos 212 # Views de Favoritos
217 -@view_config(route_name='favoritos', renderer='templates/favoritos.pt') 213 +@view_config(route_name='favoritos', renderer='templates/favoritos.pt', permission="admin")
218 def favoritos(request): 214 def favoritos(request):
219 matricula = request.matchdict['matricula'] 215 matricula = request.matchdict['matricula']
220 user_obj = User( 216 user_obj = User(
@@ -245,7 +241,7 @@ def favoritos(request): @@ -245,7 +241,7 @@ def favoritos(request):
245 'senha' : search.results[0].senha 241 'senha' : search.results[0].senha
246 } 242 }
247 243
248 -@view_config(route_name='edit_favoritos') 244 +@view_config(route_name='edit_favoritos', permission="admin")
249 def edit_favoritos(request): 245 def edit_favoritos(request):
250 """ 246 """
251 Editar do Favoritos 247 Editar do Favoritos
@@ -284,7 +280,7 @@ def edit_favoritos(request): @@ -284,7 +280,7 @@ def edit_favoritos(request):
284 return Response(edit) 280 return Response(edit)
285 281
286 # Reports 282 # Reports
287 -@view_config(route_name='create_orgao') 283 +@view_config(route_name='create_orgao',permission="admin")
288 def create_base(request): 284 def create_base(request):
289 nm_orgao = request.matchdict['nm_orgao'] 285 nm_orgao = request.matchdict['nm_orgao']
290 coletaManualBase = coleta_manual.ColetaManualBase(nm_orgao) 286 coletaManualBase = coleta_manual.ColetaManualBase(nm_orgao)
@@ -308,7 +304,7 @@ def conf_report(request): @@ -308,7 +304,7 @@ def conf_report(request):
308 search = orgao_obj.search_list_orgaos() 304 search = orgao_obj.search_list_orgaos()
309 return {'orgao_doc': search.results} 305 return {'orgao_doc': search.results}
310 306
311 -@view_config(route_name='report_itens', renderer='templates/report.pt') 307 +@view_config(route_name='report_itens', renderer='templates/report.pt', permission="admin")
312 def report_itens(request): 308 def report_itens(request):
313 nm_orgao = request.matchdict['nm_orgao'] 309 nm_orgao = request.matchdict['nm_orgao']
314 attr = request.matchdict['attr'] 310 attr = request.matchdict['attr']
@@ -318,11 +314,11 @@ def report_itens(request): @@ -318,11 +314,11 @@ def report_itens(request):
318 314
319 # Users 315 # Users
320 316
321 -@view_config(route_name='user', renderer='templates/user.pt', permission='edit') 317 +@view_config(route_name='user', renderer='templates/user.pt', permission='admin')
322 def user(request): 318 def user(request):
323 return {'project': 'WSCacicNeo'} 319 return {'project': 'WSCacicNeo'}
324 320
325 -@view_config(route_name='post_user') 321 +@view_config(route_name='post_user', permission="admin")
326 def post_user(request): 322 def post_user(request):
327 """ 323 """
328 Post doc users 324 Post doc users
@@ -355,7 +351,7 @@ def post_user(request): @@ -355,7 +351,7 @@ def post_user(request):
355 else: 351 else:
356 return {"emailerrado":"emailerrado"} 352 return {"emailerrado":"emailerrado"}
357 353
358 -@view_config(route_name='edituser', renderer='templates/editaruser.pt', permission="edit") 354 +@view_config(route_name='edituser', renderer='templates/editaruser.pt', permission="admin")
359 def edituser(request): 355 def edituser(request):
360 matricula = request.matchdict['matricula'] 356 matricula = request.matchdict['matricula']
361 user_obj = User( 357 user_obj = User(
@@ -382,7 +378,7 @@ def edituser(request): @@ -382,7 +378,7 @@ def edituser(request):
382 'senha' : search.results[0].senha 378 'senha' : search.results[0].senha
383 } 379 }
384 380
385 -@view_config(route_name='put_user') 381 +@view_config(route_name='put_user', permission="admin")
386 def put_user(request): 382 def put_user(request):
387 """ 383 """
388 Edita um doc de user apartir do id 384 Edita um doc de user apartir do id
@@ -423,7 +419,7 @@ def put_user(request): @@ -423,7 +419,7 @@ def put_user(request):
423 else: 419 else:
424 return { } 420 return { }
425 421
426 -@view_config(route_name='listuser', renderer='templates/list_user.pt', permission="view") 422 +@view_config(route_name='listuser', renderer='templates/list_user.pt', permission="admin")
427 def listuser(request): 423 def listuser(request):
428 user_obj = User( 424 user_obj = User(
429 nome = 'asdasd', 425 nome = 'asdasd',
@@ -440,7 +436,7 @@ def listuser(request): @@ -440,7 +436,7 @@ def listuser(request):
440 search = user_obj.search_list_users() 436 search = user_obj.search_list_users()
441 return {'user_doc': search.results} 437 return {'user_doc': search.results}
442 438
443 -@view_config(route_name='delete_user') 439 +@view_config(route_name='delete_user', permission="admin")
444 def delete_user(request): 440 def delete_user(request):
445 """ 441 """
446 Deleta doc apartir do id 442 Deleta doc apartir do id
@@ -465,7 +461,7 @@ def delete_user(request): @@ -465,7 +461,7 @@ def delete_user(request):
465 return Response(delete) 461 return Response(delete)
466 462
467 # Autenticação 463 # Autenticação
468 -@view_config(route_name='login', renderer='templates/login.pt') 464 +@view_config(route_name='login', renderer='templates/login.pt', permission="view")
469 @forbidden_view_config(renderer='templates/login.pt') 465 @forbidden_view_config(renderer='templates/login.pt')
470 def login(request): 466 def login(request):
471 user_obj = User( 467 user_obj = User(
@@ -482,10 +478,11 @@ def login(request): @@ -482,10 +478,11 @@ def login(request):
482 ) 478 )
483 login_url = request.route_url('login') 479 login_url = request.route_url('login')
484 referrer = request.url 480 referrer = request.url
  481 + message = 'Você não tem permissão para isso. Autentique-se.'
485 if referrer == login_url: 482 if referrer == login_url:
486 referrer = request.route_url('root') + 'home' # never use the login form itself as came_from 483 referrer = request.route_url('root') + 'home' # never use the login form itself as came_from
  484 + message = ''
487 came_from = request.params.get('came_from', referrer) 485 came_from = request.params.get('came_from', referrer)
488 - message = ''  
489 email = '' 486 email = ''
490 senha = '' 487 senha = ''
491 is_visible = 'none' 488 is_visible = 'none'
@@ -498,12 +495,12 @@ def login(request): @@ -498,12 +495,12 @@ def login(request):
498 headers = remember(request, email) 495 headers = remember(request, email)
499 return HTTPFound(location = came_from, 496 return HTTPFound(location = came_from,
500 headers = headers) 497 headers = headers)
501 - is_visible = "block"  
502 message = 'E-mail ou senha incorretos' 498 message = 'E-mail ou senha incorretos'
503 except: 499 except:
504 - is_visible = "block"  
505 message = 'E-mail ou senha incorretos' 500 message = 'E-mail ou senha incorretos'
506 501
  502 + if message != '':
  503 + is_visible = "block"
507 return dict( 504 return dict(
508 message = message, 505 message = message,
509 url = request.application_url + '/login', 506 url = request.application_url + '/login',
@@ -513,14 +510,14 @@ def login(request): @@ -513,14 +510,14 @@ def login(request):
513 is_visible = is_visible, 510 is_visible = is_visible,
514 ) 511 )
515 512
516 -@view_config(route_name='logout') 513 +@view_config(route_name='logout', permission="admin")
517 def logout(request): 514 def logout(request):
518 headers = forget(request) 515 headers = forget(request)
519 return HTTPFound(location = request.route_url('login'), 516 return HTTPFound(location = request.route_url('login'),
520 headers = headers) 517 headers = headers)
521 518
522 # Coleta 519 # Coleta
523 -@view_config(route_name='cadastro_coleta', renderer='templates/cadastro_coleta.pt') 520 +@view_config(route_name='cadastro_coleta', renderer='templates/cadastro_coleta.pt', permission="admin")
524 def cadastro_coleta(request): 521 def cadastro_coleta(request):
525 orgao_obj = Orgao( 522 orgao_obj = Orgao(
526 nome = 'teste', 523 nome = 'teste',
@@ -536,7 +533,7 @@ def cadastro_coleta(request): @@ -536,7 +533,7 @@ def cadastro_coleta(request):
536 return {'orgao_doc': search.results} 533 return {'orgao_doc': search.results}
537 534
538 535
539 -@view_config(route_name='post_coleta_manual') 536 +@view_config(route_name='post_coleta_manual', permission="admin")
540 def post_coleta_manual(request): 537 def post_coleta_manual(request):
541 """ 538 """
542 Post doc ColetaManual 539 Post doc ColetaManual