Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## discografiacatolica.rb (la aplicación real)
- #!/usr/bin/env ruby
- require 'rubygems'
- require 'sinatra'
- require 'activerecord'
- ## base de datos
- ActiveRecord::Base.establish_connection(
- :adapter => 'mysql',
- :encoding => 'utf8',
- :database => 'discografiacatolica',
- :username => 'root',
- :password => 'Hefesto1',
- :timeout => 5000
- )
- # Usuarios
- class User < ActiveRecord::Base
- # un usuario *tiene muchos* posts (donde es 'author'/'autor')
- has_many :posts, :foreign_key => 'author_id'
- end
- class Post < ActiveRecord::Base
- # un post *pertenece* a un usuario a.k.a. autor
- belongs_to :author, :class_name => 'User'
- # a la vez, un post *tiene muchos* comentarios
- has_many :comments
- end
- class Comment < ActiveRecord::Base
- # un comentario *pertenece* a un post
- belongs_to :comment
- end
- ## ahi va, la aplicacion...
- enable :sessions # habilitar las sesiones
- require 'simpleauth' # las funciones para la autenticacion
- get '/' do
- # la portada
- @page_title = 'Portada'
- erb :index
- end
- ## administracion
- get '/admin' do
- # con esta linea requerimos autenticacion
- myway()
- @page_title = 'Panel Administrativo'
- erb :admin
- end
- ## sesiones
- get '/session/login' do
- # mostrar el form. de login
- @page_title = 'Inicio de sesión'
- erb :login
- end
- post '/session/login' do
- # procesar los datos de login
- if authorize
- # es correcto, authorize ya pone una variable de sesion
- # para identificar al usuario
- puts 'Correcto!'
- redirect '/admin'
- else
- # retornar al usuario al form de login...
- puts 'Incorrecto!'
- redirect '/session/login'
- end
- end
- get '/session/logout' do
- # cerrar la sesion
- session[:user_id] = nil
- # redireccionar a la portada
- redirect '/'
- end
- ## errores
- not_found do
- # el famoso 404
- @page_title = 'Error'
- erb :notfound
- end
- ## simpleauth.rb (autenticación)
- # una especie de autenticacion
- def myway()
- unless session[:user_id]
- redirect '/session/login'
- end
- end
- def authorize()
- email = params[:email]
- password = params[:password]
- # buscar el usuario en la db
- u = User.find(:all, :conditions => ['email = ? AND password = ?', email, password])
- if u.empty?
- return nil
- else
- session[:user_id] = u[0].id
- return u[0]
- end
- end
- def current_user()
- if session[:user_id]
- return User.find(session[:user_id])
- else
- return nil
- end
- end
Add Comment
Please, Sign In to add comment