Guest User

Untitled

a guest
Jun 2nd, 2018
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. ## discografiacatolica.rb (la aplicación real)
  2. #!/usr/bin/env ruby
  3. require 'rubygems'
  4. require 'sinatra'
  5. require 'activerecord'
  6. ## base de datos
  7. ActiveRecord::Base.establish_connection(
  8. :adapter => 'mysql',
  9. :encoding => 'utf8',
  10. :database => 'discografiacatolica',
  11. :username => 'root',
  12. :password => 'Hefesto1',
  13. :timeout => 5000
  14. )
  15. # Usuarios
  16. class User < ActiveRecord::Base
  17. # un usuario *tiene muchos* posts (donde es 'author'/'autor')
  18. has_many :posts, :foreign_key => 'author_id'
  19. end
  20. class Post < ActiveRecord::Base
  21. # un post *pertenece* a un usuario a.k.a. autor
  22. belongs_to :author, :class_name => 'User'
  23. # a la vez, un post *tiene muchos* comentarios
  24. has_many :comments
  25. end
  26. class Comment < ActiveRecord::Base
  27. # un comentario *pertenece* a un post
  28. belongs_to :comment
  29. end
  30. ## ahi va, la aplicacion...
  31. enable :sessions # habilitar las sesiones
  32. require 'simpleauth' # las funciones para la autenticacion
  33. get '/' do
  34. # la portada
  35. @page_title = 'Portada'
  36. erb :index
  37. end
  38. ## administracion
  39. get '/admin' do
  40. # con esta linea requerimos autenticacion
  41. myway()
  42. @page_title = 'Panel Administrativo'
  43. erb :admin
  44. end
  45. ## sesiones
  46. get '/session/login' do
  47. # mostrar el form. de login
  48. @page_title = 'Inicio de sesi&oacute;n'
  49. erb :login
  50. end
  51. post '/session/login' do
  52. # procesar los datos de login
  53. if authorize
  54. # es correcto, authorize ya pone una variable de sesion
  55. # para identificar al usuario
  56. puts 'Correcto!'
  57. redirect '/admin'
  58. else
  59. # retornar al usuario al form de login...
  60. puts 'Incorrecto!'
  61. redirect '/session/login'
  62. end
  63. end
  64. get '/session/logout' do
  65. # cerrar la sesion
  66. session[:user_id] = nil
  67. # redireccionar a la portada
  68. redirect '/'
  69. end
  70. ## errores
  71. not_found do
  72. # el famoso 404
  73. @page_title = 'Error'
  74. erb :notfound
  75. end
  76.  
  77. ## simpleauth.rb (autenticación)
  78. # una especie de autenticacion
  79. def myway()
  80. unless session[:user_id]
  81. redirect '/session/login'
  82. end
  83. end
  84. def authorize()
  85. email = params[:email]
  86. password = params[:password]
  87. # buscar el usuario en la db
  88. u = User.find(:all, :conditions => ['email = ? AND password = ?', email, password])
  89. if u.empty?
  90. return nil
  91. else
  92. session[:user_id] = u[0].id
  93. return u[0]
  94. end
  95. end
  96. def current_user()
  97. if session[:user_id]
  98. return User.find(session[:user_id])
  99. else
  100. return nil
  101. end
  102. end
Add Comment
Please, Sign In to add comment