from gluon.tools import Auth, Service, PluginManager
auth = Auth(db)
service = Service()
plugins = PluginManager()
#Custom auth_table
db.define_table(
auth.settings.table_user_name,
Field('first_name',length=128,default=''),
Field('last_name',length=128,default=''),
Field('username','string',length=128),
Field('email',length=128),
Field('password','password'),
Field('department','string'),
Field('registration_key', length=512, # required
writable=False, readable=False,default=''),
Field('reset_password_key', length=512, # required
writable=False, readable=False,default=''),
Field('registration_id', length=512, # required
writable=False, readable=False,default=''))
## create all tables needed by auth if not custom tables
auth.define_tables(username=True, signature=False)
custom_auth_table = db[auth.settings.table_user]
custom_auth_table.username.requires = IS_NOT_IN_DB(db, custom_auth_table.username)
custom_auth_table.password.requires = [CRYPT()]
custom_auth_table.email.requires = [
IS_EMAIL(error_message=auth.messages.invalid_email)]