python 2.7 - App engine User api returning incorrect user when accessed through endpoints -
the application i'm working on had python wsgi based rest backend. have moved cloud endpoints , authentication done endpoints.get_current_user(). works new code. still using old services (datastore fetches etc) , these services rely on users.get_current_user() authentication method.
now whenever users api called old services after called endpoints method, users.get_current_user() method returns internal user id used endpoints, , not id of current user.
is known feature (issue) or doing wrong?
# method called endpoints api def getuser(): """authorize , return user object.""" user = endpoints.get_current_user() if not user: raise endpoints.unauthorizedexception() # below call old user service. works because # user ldap supplied return user_service.user(user.email().split('@')[0]) if user_service.user instantiated ldap, works fine both old , new services. within old module call following function made authenticate user:
def checkuserrole(roles): # below call returns user object endpoints internal user id # since user constructor not being called ldap , # falls on users.get_current_user() user = user_service.user() if user.getuserrole() not in roles: raise unauthorizedexception() # user_service.user class snippet: class user(object): def __init__(self, ldap=none): if not ldap: ldap = utils.userldap() # returns incorrect user object self.login = ldap # ldap internal id .... this can fixed passing in ldap returned endpoints.get_current_user() every user call mean changing whole bunch of method parameters , constructor calls. wasn't able find anywhere else. there way around it?
Comments
Post a Comment