2010-06-22 13 views
10

En GAE, ¿hay alguna manera de averiguar si un User es un administrador?Google App Engine: averigüe si un usuario es administrador

Mientras que el is_current_user_admin() revela si el usuario actual es un administrador, me gustaría saber si hay una manera de descubrir si un objeto dado User es para un administrador o no (por ejemplo, una hipotética User.is_admin() función).

Gracias por leer.

Brian

+0

Aparentemente ha cambiado desde que aceptó la respuesta. Por favor, consulte http://stackoverflow.com/a/9103942/94363 – rds

Respuesta

5

Por desgracia, el modelo User no contiene ninguna información acerca de si el usuario es un administrador o no.

Si su lista de administradores cambia con poca frecuencia, entonces podría escribir su propia función is_admin() que comprueba si el valor User.user_id() corresponde a una de las cuentas de sus administradores. Por ejemplo:

ADMIN_USER_IDS = ['id1', 'id2', ...] # manually populated list 
def is_admin(user): 
    return user.user_id() in ADMIN_USER_IDS 
1

Eso no es posible.

Se puede crear una clase contenedora alrededor users.User y realizar un seguimiento de si o no que el usuario era un administrador, a partir de la última vez que él/ella ha identificado. (Usted no puede determinar si un usuario dado es actualmente un administrador, a menos que ese usuario sea actualmente el cliente.)

El uso del estado del administrador de Google App Engine es algo restrictivo; por ejemplo, ¿qué ocurre si desea crear un nuevo grupo de usuarios con privilegios superiores a los normales pero no completamente tan alto como el del administrador? Lo mejor es no combinar privilegios en su aplicación con privilegios en la Consola de administración.

3

Esto es posible, pero no a través del objeto Usuario, y solo aparece en la API de Java, no en la python. Es necesario utilizar el UserService:

UserService userService = UserServiceFactory.getUserService(); 
boolean adminUser = userService.isUserAdmin(); 
+0

aseado. ¿Está eso disponible en Python? –

+0

Esto es lo mismo que python 'is_current_user_admin()'. No le permite verificar el estado de administrador de un usuario ** que no sea el usuario actual ** –