On Tuesday, January 24, 2017 at 6:50:30 AM UTC-5, Ramos wrote:
>
> hello i send a link to another user to approve a document.
>
> like this....
>
>
> http://myapp.etc.etc/fileit/events/list?itemID=146&t=ficheiros&uuid=6ed5d053-a2ff-48d8-8bd9-18400a059de4&_signature=118c38a9845690d4acf628bc1b977ef1eca864fe
>
> if i send it to another user , that user gets a "not authorized" error 
> however if i send it to me as the approver i get the document to approve 
> and it works ok
>
> How can i solve this?
>
> the list function in controller events starts like this
>
> @auth.requires_signature()
> def list():
>

The @auth.requires_signature() decorator expects the URL signature to be 
generated using the hmac key that is generated for the logged in user at 
login time (this key is stored in the user's session). However, you are 
presumably generating the signature in a request related to your own 
session, not the session of the user in question, so the hmac key used to 
generate the signature is not the same as the hmac key of the user that 
ultimately clicks the link.

Instead, you must generate a signature based on some secret plus something 
unique to the user you are targeting, and then use the URL.verify() method 
to check that signature at authorization time. Something like this:

secret = '123abc' # Just an example -- the real secret should be longer and 
random.

def link_generating_action():
    targeted_user_id = some_id # Somehow get the id of the user you are 
targeting.
    url = URL('default', 'myaction', hmac_key='%s%s' % (secret, 
targeted_user_id))
    link = A('For your eyes only', _href=url)
    [do something with link]

@auth.requires(lambda: URL.verify(request, hmac_key='%s%s' % (secret, auth.
user.id))
def myaction():
    ...

For access to the above action, the user must be logged in, and the 
signature must match the one generated using a key that combines the secret 
plus the user's id.

Anthony

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to