Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'sinatra'
- require 'sinatra/activerecord'
- ActiveRecord::Base.establish_connection(
- :adapter => 'sqlite3',
- :database => 'wiki.db'
- )
- class User < ActiveRecord::Base
- validates :username, presence: true, uniqueness: true
- validates :password, presence: true
- end
- $myinfo = "Dinis Dimitris"
- @info = ""
- @letter_count = 0
- @word_count = 0
- def _word_count(filename)
- word_count = 0
- y = File.open(filename,"r")
- y.each do |line|
- splitted = line.split
- splitted.each do
- word_count = word_count + 1
- end
- @word_count = word_count
- end
- end
- def _letter_count(filename)
- count = 0
- f = File.open(filename,"r")
- f.each do |line|
- word = line.scan /\w/
- word.each do
- count = count + 1
- end
- end
- @letter_count = count
- end
- def readFile(filename)
- info = ""
- file = File.open(filename)
- file.each do |line|
- info = info + line
- end
- file.close
- $myinfo = info
- end
- def deletefile(filename)
- file = File.open(filename)
- file.each do |line|
- file.delete(line)
- end
- file.close
- end
- helpers do
- def protected!
- if authorized?
- return
- end
- redirect '/denied'
- end
- def user_protected!
- if user_authorized?
- return
- end
- redirect '/denied'
- end
- def authorized?
- if $credentials != nil
- @Userz = User.where(:username => $credentials[0]).to_a.first
- if @Userz
- if @Userz.admin == true
- return true
- else
- return false
- end
- else
- return false
- end
- end
- end
- def user_authorized?
- if $credentials != nil
- @Userz = User.where(:username => $credentials[0]).to_a.first
- if @Userz
- if @Userz.edit == true
- return true
- else
- return false
- end
- else
- return false
- end
- end
- end
- end
- get '/' do
- readFile("wiki.txt")
- @info = " " + $myinfo
- _letter_count("wiki.txt")
- _word_count("wiki.txt")
- erb :home
- end
- get '/about' do
- erb :about
- end
- get '/create' do
- erb :create
- end
- get '/edit' do
- user_protected!
- info = ""
- file = File.open("wiki.txt")
- file.each do |line|
- info = info + line
- end
- file.close
- @info = info
- erb :edit
- end
- put '/edit' do
- user_protected!
- info = "#{params[:message]}"
- @info = info
- file = File.open("wiki.txt", "w")
- file.puts @info
- file.close
- redirect '/'
- erb :edit
- end
- post '/reset' do
- file = File.open("wiki.txt", "w")
- smth = " "
- file.puts smth
- file.close
- redirect '/'
- erb :edit
- end
- get '/login' do
- erb :login
- end
- post '/login' do
- $credentials = [params[:username],params[:password]]
- @Users = User.where(:username => $credentials[0]).to_a.first
- if @Users
- if @Users.password == $credentials[1]
- redirect '/'
- else
- $credentials = [' ',' ']
- redirect '/wrongaccount'
- end
- else
- $credentials = [' ',' ']
- redirect '/wrongaccount'
- end
- end
- get '/wrongaccount' do
- erb :wrongaccount
- end
- get '/createaccount' do
- erb :createaccounts
- end
- post '/createaccount' do
- n = User.new
- n.username = params[:username]
- n.password = params[:password]
- if n.username == "Admin" and n.password == "Password"
- n.edit = true
- n.admin = true
- end
- n.save
- redirect "/"
- end
- get '/logout' do
- $credentials = [' ',' ']
- redirect '/'
- end
- get '/notfound' do
- erb :notfound
- end
- get '/noaccount' do
- erb :nonaccount
- end
- get '/denied' do
- erb :denied
- end
- put '/user/:uzer' do
- n = User.where(:username => params[:uzer]).to_a.first
- n.edit = params[:edit] ? 1 : 0
- n.save
- end
- get '/user/delete/:uzer' do
- n = User.where(:username => params[:uzer]).to_a.first
- if n.username == "Admin"
- erb :denied
- else
- n.destroy
- @list2 = User.all.sort_by { |u| [u.id] }
- erb :admincontrols
- end
- end
- get '/admincontrols' do
- protected!
- @list2 = User.all.sort_by { |u| [u.id] }
- erb :admincontrols
- end
- get '/admincontrols' do
- protected!
- @list2 = User.all.sort_by { |u| [u.id] }
- erb :admincontrols
- end
- not_found do
- status 404
- redirect '/notfound'
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement