Para começar a utilizar a autenticação, é preciso importar o módulo de autenticação em um model e associá-lo ao banco de dados.
from gluon.tools import Auth
auth = Auth(db)
auth.define_tables(username=False, signature=False)
Isso fará com que o módulo crie automaticamente as tabelas de usuário. No método de criação de tabelas ainda é possível especificar se você deseja que o usuário seja registrado com um nome de usuário (username) ou somente o e-mail, ou se deseja que sejam salvas informações do usuário e da data quando ocorrerem modificações nas tabelas de usuário (signature).
Agora, você pode adicionar uma opção extra às suas tabelas da aplicação, a auth.signature.
db.define_table('gatos',
Field('nome'),
Field('raca'),
auth.signature,
format = '%(nome)s'
)
Essa opção fará com quem sejam criados cinco campos na tabela: created_by, created_on, modified_by, modified_on e is_active. Tais campos são automaticamente preenchidos quando o usuário que criou/editou aquele registro está logado, sendo:
Dessa forma, é possível associar registros no banco de dados a usuários de forma rápida e prática.
A tabela de registro de usuários, auth_user, é construída com os seguintes campos: first_name (nome), last_name (sobrenome), email, username (nome de usuário, caso definido na construção da tabela), password (senha), registration_key, reset_password_key e registration_id (chaves de autenticação para operações realizadas pelo usuário, como, por exemplo, resetar a senha perdida por e-mail). Porém, nem sempre estaremos satisfeitos com apenas esses campos e precisaremos de campos extras.
Por isso, é possível customizar a tabela de usuário da seguinte maneira:
## depois da definição auth = Auth(db)
auth.settings.extra_fields['auth_user'] = [
Field('avatar', 'upload'),
Field('phone')]
## antes de auth.define_tables()
Essa customização pode ser feita para qualquer tabela de autenticação, não somente a auth_user.
O Auth pode ser customizado a partir de definições de seus settings. As principais configurações são:
auth.settings.actions_disabled = ['register'] # desabilita a ação de registrar usuários
auth.settings.registration_requires_verification = True # requer a confirmação do registro por e-mail
auth.settings.login_after_registration = True # faz o login do usuário após o registro
auth.settings.login_url = URL('user', args='login') # url de login
auth.settings.login_next = URL('index') # página de redirecionamento após o login
auth.settings.expiration = 3600 # tempo até que a sessão do usuário expire, em segundos
Confira uma lista completa na documentação do web2py.
Quando o usuário realiza determinadas ações são exibidas algumas mensagens por padrão. Essas mensagens podem ser editadas de acordo com suas preferências.
auth.messages.submit_button = 'Submit'
auth.messages.verify_password = 'Verify Password'
auth.messages.delete_label = 'Check to delete:'
auth.messages.function_disabled = 'Function disabled'
auth.messages.access_denied = 'Insufficient privileges'
auth.messages.registration_verifying = 'Registration needs verification'
auth.messages.registration_pending = 'Registration is pending approval'
auth.messages.login_disabled = 'Login disabled by administrator'
auth.messages.logged_in = 'Logged in'
auth.messages.email_sent = 'Email sent'
Confira uma lista completa na documentação do web2py.