Design Specs: Authorization and Authentication
Contents
Objectives
This element will need to work with the core code of the web application to implement user authorization and authentication. Catalyst has great support for this already, but we will also need to build a user database for enabling greater customizability.
Is customization mainly for GBrowse? Are there any data that should not be available to public?
customization: user can store a specific object eg. sequence,
1. Users will be able to create new accounts, or log in to the system using an Open ID
2. User preferences will be stored in a back-end database...
different ways to do this
1. Catalyst simple login ; cookies; session management
2. advantages and disadvantage of using those modules
Gbrowse Compatibility
Gbrowse2 user registration and login system
An optional user registration and login system allows users to register stable GBrowse accounts and to keep their settings and custom tracks when they move from one computer to another.
http://gmod.org/wiki/GBrowse_2.0_HOWTO#Configuring_the_User_Account_Database
To Explore
Catalyst::Plugin::Authentication
And for Credential verification:
http://search.cpan.org/perldoc?Catalyst%3A%3AAuthentication%3A%3ACredential%3A%3AOpenID
Here are some docs on Auth/Auth:
http://search.cpan.org/perldoc?Catalyst::Manual::Tutorial::05_Authentication
Catalyst Tutorial on Authentication: http://www.catalystframework.org/calendar/2008/19
This module might also be useful:
Catalyst::Extension::SimpleLogin
Deployment
Database
- build a mysql database, currently called "wormbase_user" on dev machine with username: wb , no password
- create four tables: SQL file is under /util/sql/user_login.sql
CREATE TABLE users ( id INTEGER PRIMARY KEY, username TEXT, password TEXT, email_address TEXT, first_name TEXT, last_name TEXT, ); CREATE TABLE roles ( id INTEGER PRIMARY KEY, role TEXT ); CREATE TABLE users_to_roles ( user_id INTEGER, role_id INTEGER, PRIMARY KEY (user_id, role_id) ); CREATE TABLE openid ( openid_url TEXT PRIMARY KEY, user_id_id INTEGER );
Module Requirements
- first install Math::BigInt::GMP which will require to install the gmp libaray
(on unbuntu/debian do: sudo apt-get install libgmp3-dev)
- second install Catalyst::Authentication::Credential::OpenID
- third install Crypt::SSLeay