mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
67 lines
No EOL
1.1 KiB
Ruby
67 lines
No EOL
1.1 KiB
Ruby
require './environment.rb'
|
|
|
|
get '/' do
|
|
slim :index
|
|
end
|
|
|
|
get '/new' do
|
|
@site = Site.new
|
|
slim :'new'
|
|
end
|
|
|
|
get '/dashboard' do
|
|
slim :'dashboard'
|
|
end
|
|
|
|
get '/signin' do
|
|
slim :'signin'
|
|
end
|
|
|
|
post '/create' do
|
|
@site = Site.new username: params[:username], password: params[:password], email: params[:email]
|
|
if @site.valid?
|
|
|
|
@server = Server.with_slots_available
|
|
|
|
if @server.nil?
|
|
raise 'no slots available'
|
|
end
|
|
|
|
@site.server = @server
|
|
@site.save
|
|
|
|
session[:username] = @site.username
|
|
redirect '/dashboard'
|
|
else
|
|
slim :'/new'
|
|
end
|
|
end
|
|
|
|
post '/signin' do
|
|
if Site.valid_login? params[:username], params[:password]
|
|
session[:username] = params[:username]
|
|
redirect '/dashboard'
|
|
else
|
|
flash[:error] = 'Invalid login.'
|
|
redirect '/signin'
|
|
end
|
|
end
|
|
|
|
get '/signout' do
|
|
require_login
|
|
session[:username] = nil
|
|
session[:timezone] = nil
|
|
redirect '/'
|
|
end
|
|
|
|
def dashboard_if_signed_in
|
|
redirect '/dashboard' if signed_in?
|
|
end
|
|
|
|
def require_login
|
|
redirect '/' unless signed_in?
|
|
end
|
|
|
|
def signed_in?
|
|
!session[:username].nil?
|
|
end |