def evaluate(self, environ, credentials): if is_anonymous().is_met(environ): self.unmet() nombre_usuario = credentials["repoze.what.userid"] usuario = Usuario.by_user_name(nombre_usuario) if self.id_usuario: usuario = Usuario.por_id(self.id_usuario) for r in usuario.roles: for p in r.permisos: if p.nombre_permiso.find(u"miembro") >= 0: if self.id_proyecto: if r.tipo == "Proyecto" and \ r.id_proyecto == self.id_proyecto: return elif self.id_fase: if r.tipo == "Fase" and \ r.id_fase == self.id_fase: return else: if r.tipo.find("Tipo") >= 0: ti = TipoItem.por_id(self.id_tipo_item) if ti and ti.es_o_es_hijo(r.id_tipo_item): return #if (r.tipo.find("Tipo") >= 0 and \ # self.id_tipo_item.es_o_es_hijo(r.id_tipo_item)): # r.id_tipo_item == self.id_tipo_item: # return self.unmet(self.message)
def evaluate(self, environ, credentials): if is_anonymous().is_met(request.environ): self.unmet() usuario = DBSession.query(Usuario).filter_by( nombre=credentials.get('repoze.what.userid')).first() roles_de_usuario = DBSession.query(RolUsuario).filter( RolUsuario.id_usuario == usuario.id_usuario) id_roles_usuario = [] for iterador in roles_de_usuario: id_roles_usuario.append(iterador.id_rol_usuario) denegar = 1 for ids in id_roles_usuario: permisos_recursos = DBSession.query(PermisoRecurso).filter( PermisoRecurso.rol_usuario == ids) for permiso_recurso in permisos_recursos: if permiso_recurso.id_permiso == self.id_permiso: if self.id_fase: fase = DBSession.query(Recurso).filter( Recurso.id_fase == self.id_fase) if fase.count() > 0: denegar = 0 if self.id_proyecto: proyecto = DBSession.query(Recurso).filter( Recurso.id_proyecto == self.id_proyecto) if proyecto.count() > 0: denegar = 0 if denegar == 1: self.unmet()
def new(self): if is_met(has_permission("add_user")): return render_form(self.menu_items, action="create", add_number_of_emails=1) if is_met(is_anonymous()): c.menu_items = h.top_menu(self.menu_items, _("Customers")) c.came_from = str(request.GET.get("came_from", "")) or url(controller="home", action="index") if request.GET.get("came_from", None): h.flash(_("After filling the from you will be sent back to your shopping cart")) return render("/derived/user/new.html")
def evaluate(self, environ, credentials): if is_anonymous().is_met(environ): self.unmet() nombre_usuario = credentials['repoze.what.userid'] usuario = Usuario.by_user_name(nombre_usuario) if self.id_usuario: usuario = Usuario.por_id(self.id_usuario) if (self.id_tipo_item): #recuperar id de fase y proyecto ti = TipoItem.por_id(self.id_tipo_item) if (not self.id_fase): self.id_fase = ti.id_fase if (not self.id_proyecto): self.id_proyecto = ti.id_proyecto elif (self.id_fase): fase = Fase.por_id(self.id_fase) if (not self.id_proyecto): self.id_proyecto = fase.id_proyecto for r in usuario.roles: tiene = False for p in r.permisos: if p.nombre_permiso == self.nombre_permiso: tiene = True if not tiene: continue if r.es_rol_sistema(): return if self.id_proyecto == r.id_proyecto: if r.tipo == u"Proyecto": return if self.id_fase == r.id_fase: if r.tipo == u"Fase": return ti = TipoItem.por_id(self.id_tipo_item) if ti and ti.es_o_es_hijo(r.id_tipo_item): return self.unmet(self.message % self.nombre_permiso)
def evaluate(self, environ, credentials): if is_anonymous().is_met(request.environ): self.unmet() usuario = DBSession.query(Usuario).filter(Usuario.nombre_usuario == \ credentials.get('repoze.what.userid')).first() fichas = DBSession.query(Ficha).filter(Ficha.usuario == usuario) if self.id_proyecto: fichas = fichas.filter(Ficha.id_proyecto == self.id_proyecto) if self.id_fase: fichas = fichas.filter(Ficha.id_fase == self.id_fase) band = False for ficha in fichas: for perm in ficha.rol.permisos: if perm.nombre == self.permiso: band = True break if not band: self.unmet()
def index(self): """Handle the front-page.""" if predicates.is_anonymous(): admin=False logged_in=False else: logged_in=True user = request.environ.get('repoze.who.identity')['user'] if predicates.has_permission('admin'): admin=True else: admin=False systems = System.get_all_systems() return dict(page='index',systems=systems, logged_in=logged_in, admin=admin)
def evaluate(self, environ, credentials): if is_anonymous().is_met(request.environ): self.unmet() usuario = DBSession.query(Usuario).filter_by(nombre = credentials.get('repoze.what.userid')).first() roles_de_usuario = DBSession.query(RolUsuario).filter(RolUsuario.id_usuario == usuario.id_usuario) id_roles_usuario = [] for iterador in roles_de_usuario: id_roles_usuario.append(iterador.id_rol_usuario) denegar = 1 for ids in id_roles_usuario: permisos_recursos = DBSession.query(PermisoRecurso).filter(PermisoRecurso.rol_usuario == ids) for permiso_recurso in permisos_recursos: if permiso_recurso.id_permiso == self.id_permiso: if self.id_fase: fase = DBSession.query(Recurso).filter(Recurso.id_fase == self.id_fase) if fase.count() > 0: denegar = 0 if self.id_proyecto: proyecto = DBSession.query(Recurso).filter(Recurso.id_proyecto == self.id_proyecto) if proyecto.count() > 0: denegar = 0 if denegar == 1: self.unmet()
user = Session.query(User).filter_by(id=id).one() except: h.flash(_("No user with ID:%s to view") % id) return redirect(h.url(controller="user", action="index")) c.menu_items = h.top_menu(self.menu_items, _("Customers")) c.user = user return render("/derived/user/staff/view.html") else: return redirect(url(controller="user", action="index")) def forgot(self): c.menu_items = h.top_menu(self.menu_items, _("Customers")) return render("/derived/user/forgot.html") @validate(schema=Forgot(), form="forgot") @ActionProtector(is_anonymous()) def forgotaction(self): values = dict(request.params) del values["action"] msg = "" settingsf = file(config["settings_file"], "rb") session["site_settings"] = pickle.load(settingsf) settingsf.close() session.save() captchres = h.captcha.submit( values["recaptcha_challenge_field"], values["recaptcha_response_field"], "6LepGccSAAAAAMfzDtmvyRjJ7-A1FWuJa5qUTxX2", session["site_settings"]["ip_address"], )
def evaluate(self, environ, credentials): if is_anonymous().is_met(environ): self.unmet() nombre_usuario = credentials["repoze.what.userid"] usuario = Usuario.by_user_name(nombre_usuario) if self.id_usuario: usuario = Usuario.por_id(self.id_usuario) if (self.id_tipo_item): #recuperar id de fase y proyecto ti = TipoItem.por_id(self.id_tipo_item) if (not self.id_fase): self.id_fase = ti.id_fase if (not self.id_proyecto): self.id_proyecto = ti.id_proyecto elif (self.id_fase): fase = Fase.por_id(self.id_fase) if (not self.id_proyecto): self.id_proyecto = fase.id_proyecto for r in usuario.roles: if (r.tipo.find(u"Sistema") == 0): for p in r.permisos: if (p.tipo.find(self.tipo) >= 0): return if (r.tipo.find(u"Proyecto") == 0): if (self.tipo == "Proyecto" and self.id_proyecto == r.id_proyecto): return elif (self.tipo == "Fase" or self.tipo == "Tipo"): algun = False for p in r.permisos: if (p.tipo.find(self.tipo) >= 0): algun = True break if (algun and self.id_proyecto == r.id_proyecto): return elif (algun and (self.id_fase + self.id_proyecto +\ self.id_tipo_item == 0)): return elif (r.tipo.find(u"Fase") == 0): if (self.tipo == "Fase"): if (self.id_fase == r.id_fase): return elif (not self.id_fase): fase = Fase.por_id(r.id_fase) if (self.id_proyecto == fase.id_proyecto): return elif (self.tipo == "Tipo"): algun = False for p in r.permisos: if (p.tipo.find(self.tipo) >= 0): algun = True break if (algun and self.id_fase == r.id_fase): return elif (algun and (self.id_fase + self.id_proyecto +\ self.id_tipo_item == 0)): return elif (r.tipo.find(u"Tipo") == 0): if (self.tipo == "Tipo"): if (self.id_tipo_item and ti.es_o_es_hijo(r.id_tipo_item)): return ti = TipoItem.por_id(r.id_tipo_item) if (ti.id_fase == self.id_fase or ti.id_proyecto == self.id_proyecto): return ''' algun = False for p in r.permisos: if p.nombre_permiso.find(u"consultar") < 0 and \ p.tipo.find(self.tipo) >= 0 and \ p.nombre_permiso != "miembro": algun = True break if not algun: continue if (self.id_fase + self.id_proyecto + self.id_tipo_item == 0): return if (r.es_rol_sistema()): return if (self.id_proyecto == r.id_proyecto): if (r.tipo == u"Proyecto"): return if (self.id_fase == r.id_fase): if (r.tipo == u"Fase"): return ti = TipoItem.por_id(self.id_tipo_item) if (ti and ti.es_o_es_hijo(r.id_tipo_item)): return ''' self.unmet(self.message)
def test_anonymous_user(self): environ = {} p = predicates.is_anonymous() self.eval_met_predicate(p, environ)
def test_authenticated_user(self): environ = make_environ('gustavo') p = predicates.is_anonymous() self.eval_unmet_predicate(p, environ, 'The current user must be anonymous')
class RootController(TGController): sub1 = SubController() arena = InvisibleArena() @navbar('TestHome', icon="navdeco.png") @sidebar('TestHome on the side', icon='sidedeco.png') @expose('genshi:tgext.menu.test.templates.index') def index(self, *p, **kw): return dict(currpage='TestHome') @navbar(u'T\xe9l\xe9phones') @expose('genshi:tgext.menu.test.templates.index') def unicode(self, *p, **kw): return dict() @navbar('Foo Spot || Foo', extras={'id': 'foo_1'}) @expose('genshi:tgext.menu.test.templates.index') def foo(self, *p, **kw): return dict() @navbar('Foo Spot || Bar', extras={'id': 'foo_2'}) @expose('genshi:tgext.menu.test.templates.index') def bar(self, *p, **kw): return dict() @navbar('Foo Spot || Baz') @expose('genshi:tgext.menu.test.templates.index') def baz(self, *p, **kw): return dict() @navbar('Logout', permission=Not(is_anonymous())) @expose('genshi:tgext.menu.test.templates.index') def logout(self, *p, **kw): return dict() @navbar('ID Duper || Spot 1', extras={'id': 'idduper_1'}) @expose('genshi:tgext.menu.test.templates.index') def iddupe1(self, *p, **kw): return dict() @navbar('ID Duper || Spot 2', extras={'id': 'idduper_2'}) @expose('genshi:tgext.menu.test.templates.index') def iddupe2(self, *p, **kw): return dict() #### The following are required for auth stuff to work @expose('tgext.menu.test.templates.login') def login(self, came_from='/'): """Start the user login.""" login_counter = request.environ['repoze.who.logins'] if login_counter > 0: flash(_('Wrong credentials'), 'warning') return dict(page='login', login_counter=str(login_counter), came_from=came_from) @expose() def post_login(self, came_from='/'): """ Redirect the user to the initially requested page on successful authentication or redirect her back to the login page if login failed. """ if not request.identity: login_counter = request.environ['repoze.who.logins'] + 1 redirect('/login', came_from=came_from, __logins=login_counter) userid = request.identity['repoze.who.userid'] flash(_('Welcome back, %s!') % userid) redirect(came_from) @expose() def post_logout(self, came_from='/'): """ Redirect the user to the initially requested page on logout and say goodbye as well. """ flash(_('We hope to see you soon!')) redirect(came_from)