Now i have 2 problems.
Recap
1 -
print auth.user.isempreiteiro # *returns None*
record=db(db.auth_user.id==auth.user_id).select()[0]
print record['isempreiteiro'] #*returns True "This is the real value"*
Why?
2 -
my decorated function in controller default works ok when user logged in
@auth.requires_login()
*#@auth.requires(checkempreiteiro(auth.user_id)==True) *
def inserttrab():
form = SQLFORM(db.trabalhador)
if form.accepts(request.vars, session):
session.flash = 'registo inserido com sucesso'
redirect(URL())
return dict(form=form)
but gives an error when the user does logout. logging out should redirect
to login page but the line
*#@auth.requires(checkempreiteiro(auth.user_id)==True) *
def inserttrab():
...
give a ticket with the error msg.
File "C:\web2pyGit\web2py\gluon\dal.py", line 9170, in __getitem__
row = self.records[i]
IndexError: list index out of range
When i browse to index page the same error .Why?
thank you
2012/12/20 António Ramos <[email protected]>
> extra fields are available in my auth.user var but they have "None"
> instead of the real value
>
> so i create an extra function
>
>
> def checkempreiteiro(user):
> print auth.user.isempreiteiro # *returns None*
> record=db(db.auth_user.id==user).select()[0]
> return record['isempreiteiro'] #*returns True*
>
>
> @auth.requires_login()
> @auth.requires(checkempreiteiro(auth.user_id)==True)
>
>
>
> 2012/12/20 Anthony <[email protected]>
>
>> Note, should be @auth.requires(...).
>>
>> Anthony
>>
>>
>> On Thursday, December 20, 2012 10:04:26 AM UTC-5, Massimo Di Pierro wrote:
>>>
>>> @requires(auth.user.F1=='F')
>>> def yourfunction(...): ....
>>>
>>> On Thursday, 20 December 2012 06:40:09 UTC-6, Ramos wrote:
>>>>
>>>> hello i have a function to be acessed only by users with an extra field
>>>> F1 set to "F"
>>>>
>>>> how to protect this function to not be used bu everyone?
>>>>
>>>> what is the best way?
>>>>
>>>> thank you
>>>> António
>>>>
>>> --
>>
>>
>>
>>
>
>
--