Rails LoginEngine : installation

Posted by Pierre Rigal on août 20, 2006

Je l’ai dit précédement, je découvre Rails en ce moment. Mes tous premiers pas avec Rails m’ont permis de créer une très légère application de test afin de voir comment fonctionne la gestion de MySQL avec ActiveRecords.

Pour continuer me tests j’ai voulu voir comment fonctionnaient les “engines” de Ruby On Rails. Ainsi j’ai décidé d’ajouter à ma petite application une gestion des utilisateurs afin par exemple de protéger la partie administration.

Ce premier article sur le LoginEngine décrit l’installation et la mise en place de l’engine sur une petite application existante.

Le LoginEngine késako ?

Avant d’aller plus loin, essayons de définir ce qu’est le LoginEngine et quelle sera son utilité pour une application.

Un engine est un moyen d’ajouter une ou plusieurs fonctionnalités sous forme de “mini application” directement dans une application existante sans en altérer le code existant. Un engine respecte totalement le principe “modèle vue controlleur” (MVC).

Le LoginEngine est donc un engine apportant des fonctionnalités relevant de la gestion des utilisateurs. Cet engine se révèle donc utile si vous voulez simplement protéger l’administration de votre application par un couple login/pass, ou encore si vous voulez créez une communautée d’utilisateur autour de votre site.

Environnement de développement

J’ai donc sous la main : - Une Ubuntu Dapper - Une fraiche installation de Ruby et de Rails - Radrails installé et configuré - Une simple application rails (ex: gestion de DVD) (Application pouvant être conçue en 2 lignes de code grâce au scaffolding.) Les actions possibles de mon application sont donc : ajouter, supprimer, editer.

Le LoginEngine va donc me permettre de protéger l’accès à cette page de gestion.

Mise en place du LoginEngine

Avec Radrails, allez sur l’onglet “Rails Plugins”, cherchez le “Login engine”, verifiez que l’option de configuration “Install” est bien sélectionnée puis cliquez sur GO.

Le LoginEngine sera donc gréffé à votre application, il se situera dans le répertoire vendor/plugin/login_engine. Vous pouvez y jetter un oeil, sa structure ressemble à celle d’une application rails classique.

Alternative d’installation pour ceux qui n’utilisent pas RadRails :

$ script/plugin install login_engine

Environment.rb

Dans votre fichier environment.rb, ajouter ceci en bas :

module LoginEngine
    config :salt, "your-salt-here"
end
Engines.start :login

C’est aussi dans ce fichier que vous pouvez ajouter des directives de configuration dont vous trouverez la liste dans le fichier /lib/login_engine.rb du LoginEngine. (exemple ci-dessous)

config :email_from, 'webmaster@your.company'

Activation, et filtrage

Afin de s’assurer que le LoginEngine soit disponible pour toute votre application il faut mettre les lignes suivantes dans le fichier app/controllers/application.rb.

require 'login_engine'

class ApplicationController < ActionController::Base include LoginEngine helper :user model :user

Ajouter la ligne suivante si vous voulez que le login soit demandé sur l’ensemble du site.

     before_filter :login_required

Sinon, mettez cette ligne dans le controleur souhaité si vous voulez qu’il soit protégé.

class AdminDvdController < ApplicationController
  beforefilter :loginrequired

De plus il vous faut inclure le loginEngine dans les helpers de votre application. Pour cela éditer le fichier application_helper.rb comme suit :

module ApplicationHelper
  include LoginEngine
end

Les mails.

Le fonctionnement normal du LoginEngine prévoit l’envoie d’un email pour l’activation d’un compte et pour regénérer un mot de passe perdu, cependant cela peut être désactivé en ajoutant cette option de configuration à votre fichier environment.rb.

module LoginEngine
  config :useemailnotification, false
end

Je ne conseille pas la désactivation de cette option car dans ce cas le sytème sera incapable de regénérer un mot de passe perdu.

Si vous choisissez l’utilisation des mails il faut alors configurer la classe ActionMailer comme suit (fichier config/environments/development.rb):

ActionMailer::Base.serversettings = {
  :address => "smtp.devotreserveur.com",
  :port => 25,
  :domain => "votre.domaine.com",
  :username => "votre login ici",
  :password => "",
  :authentication => :login
} 

Si votre application s’exécute dans un environement Unix il est aussi possible d’utiliser sendmail afin d’envoyer les emails. Pour cela il suffit d’écrire cela à la place de la configuration ci-dessus :

ActionMailer::Base.delivery_method=:sendmail

Base de donnée

Afin de générer la table gérant les utilisateurs il suffit d’éxecuter la commande suivante à la racine de votre application :

$ rake engine_migrate ENGINE=login

Affichage des messages d’information.

A la base le LoginEngine n’affiche aucun message, il faut donc prévoir un bout de code dans le layout utilisé par le LoginEngine afin d’afficher ces messages :

<% for name in [:notice, :warning, :message] %>
  <% if flash[name] %>
    <%= "
#{flash[name]}
" % <% end %> <% end %>

Pour aller plus loin.

Un prochain article traitera de l’extension du LoginEngine. J’expliquerai notemment : - comment ajouter de nouvelles informations à la table “users”, - comment ajouter une simple notion de rôle afin de n’autoriser l’acces à certaines parties du site qu’aux administrateurs par exemple. - comment modifier les vues par défaut. - et surtout comment associer un utilisateur avec un commentaire ou n’importe quel autre modèle de votre application.

Tout cela sans altérer le fonctionnement initial du LoginEngine et les principes du MVC.

Trackbacks

Use this link to trackback from your own site.

Comments

Leave a response

  1. […] Si vous débutez comme moi, vous devez vous y perdre un peu entre les differentes extensions de RubyOnRails. On trouve des plugins, des engines mais aussi des generator. En fait dans la classification RubyOnRails, les engines et les generator sont des plugins mais d’un type different. On a vu ce qu’étais les engines dans un précédent article, penchons nous maintenenant sur un generator. […]

  2. […] Voilà la dernière partie de mon tour d’horizon sur le LoginEngine ! Nous avons vu comment installer le LoginEngine, puis comment le surcharger, nous allons maintenant voir comment l’utiliser dans le cadre d’une application classique (telle qu’un petit blog.) […]

  3. […] Je vais donc commencer (ou plutôt reprendre) ce tour d’horizon avec actsasauthenticated. Je sais, j’ai déjà parlé à plusieurs reprises 1 2 3 4 de systèmes permettant de traiter l’identification avec Rails, cependant je ne pouvais pas en dire autant sans parler du plugin que j’utilise maintenant sur tout mes projets : actsasautenticated. […]

  4. Scat eating shit sex. lun, 12 mai 2008 09:54:58 CEST

    Scat eating shit sex….

    Scat sex gt gt scat sex. Animal scat sex. Scat sex….

Comments (Syntaxe Markdown)