Guest User

Untitled

a guest
Feb 18th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.64 KB | None | 0 0
  1. ['sinatra', 'sinatra/sequel', 'sass', 'json', 'rack-flash', 'digest/md5'].each{|gem|require gem}
  2.  
  3. use Rack::Session::Pool, :expire_after => 2592000
  4. use Rack::Flash
  5.  
  6. set :database, 'sqlite://Todoist.db'
  7.  
  8. class Post < Sequel::Model(:users_posts)
  9. Post.plugin :json_serializer
  10. many_to_one :users
  11. end
  12.  
  13. class User < Sequel::Model(:users)
  14. User.plugin :json_serializer
  15. one_to_many :posts
  16. end
  17.  
  18. migration "create the users_posts table" do
  19. database.create_table :users_posts do
  20. primary_key :id
  21. Integer :priority
  22. String :title, :text => true
  23. timestamp :created_at, :null => false
  24. foreign_key :user_id
  25. end
  26. end
  27.  
  28. migration "create the users table" do
  29. database.create_table :users do
  30. primary_key :id
  31. varchar :name, :null => false
  32. varchar :email, :index=>true, :unique=>true, :size => 64, :null => false
  33. varchar :password, :size => 32, :null => false
  34. timestamp :created_at, :null => false
  35. timestamp :loggedin_at
  36. end
  37. end
  38.  
  39. CONTENT_TYPES = {
  40. :html => 'text/html',
  41. :css => 'text/css',
  42. :js => 'application/javascript',
  43. :json => 'application/json'
  44. }
  45.  
  46. before do
  47. request_uri = case request.env['REQUEST_URI']
  48. when /\.css$/ : :css
  49. when /\.js$/ : :js
  50. when /\.json$/ : :json
  51. else :html
  52. end
  53. content_type CONTENT_TYPES[request_uri], :charset => 'utf-8'
  54. end
  55.  
  56. get '/' do
  57. if session[:loggedin]
  58. @posts = Post.order(:id).all
  59. else
  60. @posts = []
  61. end
  62. @notice = flash[:notice]
  63. erb :index
  64. end
  65.  
  66. get '/register' do
  67. @posts = Post.order(:id).all
  68. @notice = flash[:notice]
  69. erb :index
  70. end
  71.  
  72. get '/post/all.json' do
  73. Post.order(:priority).all.to_json(:root => true)
  74. end
  75.  
  76. get '/post/:id/delete' do
  77. if !params[:id].empty?
  78. @post = Post[params[:id]].delete
  79. flash[:notice] = "Todo deleted"
  80. else
  81. flash[:notice] = "Todo not deleted"
  82. end
  83. redirect '/'
  84. end
  85.  
  86. post '/post/delete.json' do
  87. if !params[:id].empty?
  88. Post[params[:id]].delete
  89. { :success => true }.to_json
  90. else
  91. { :success => false }.to_json
  92. end
  93. end
  94.  
  95. post '/post/create' do
  96. if !params[:title].empty?
  97. Post.create(:title => params[:title], :created_at => Time.now, :user_id => session[:user_id])
  98. flash[:notice] = "Todo created"
  99. else
  100. flash[:notice] = "Todo needs title"
  101. end
  102. redirect '/'
  103. end
  104.  
  105. post '/post/create.json' do
  106. if !params[:title].empty?
  107. { :data => Post.create(:title => params[:title], :created_at => Time.now, :user_id => session[:user_id]), :success => true }.to_json
  108. else
  109. { :success => false }.to_json
  110. end
  111. end
  112.  
  113. post '/post/sortList.json' do
  114. @position = 1;
  115. params[:item].each_with_index do |id, index|
  116. Post[id].update(:priority => index+1)
  117. end
  118. end
  119.  
  120. get '/user/all.json' do
  121. User.order(:id).all.to_json(:root => true)
  122. end
  123.  
  124. post '/user/login' do
  125. @user = User.filter('email = ? AND password = ?', params[:email], Digest::MD5.hexdigest(params[:password])).update(:loggedin_at => Time.now)
  126. puts @user.count
  127. session[:loggedin] = true
  128. session[:user_id] = @user.id
  129. redirect '/'
  130. end
  131.  
  132. post '/user/login.json' do
  133. @user = User.filter('email = ? AND password = ?', params[:email], Digest::MD5.hexdigest(params[:password])).update(:loggedin_at => Time.now).to_json
  134. end
  135.  
  136. post '/user/create' do
  137. if !params[:name].empty? && !params[:email].empty? && !params[:password].empty? && params[:password] == params[:passwordAgain]
  138. User.create(:name => params[:name], :email => params[:email], :password => Digest::MD5.hexdigest(params[:password]), :created_at => Time.now)
  139. Users.save
  140. end
  141. redirect '/'
  142. end
  143.  
  144. get '/user/logout' do
  145. session[:user_id] = nil
  146. session[:loggedin] = nil
  147. redirect '/'
  148. end
  149.  
  150. get '/style.css' do
  151. scss :style
  152. end
Add Comment
Please, Sign In to add comment