Skip to content

Instantly share code, notes, and snippets.

@saboyutaka
Last active June 11, 2018 03:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save saboyutaka/c78551172d35a8ecab864d46a24fd977 to your computer and use it in GitHub Desktop.
Save saboyutaka/c78551172d35a8ecab864d46a24fd977 to your computer and use it in GitHub Desktop.
Sinatra Login
require 'sinatra'
require 'mysql2'
require 'mysql2-cs-bind'
def db
# Mysqlドライバの設定
@db ||= Mysql2::Client.new(
host: 'localhost',
port: 3306,
username: 'root',
password: '',
database: 'your-database',
reconnect: true,
)
end
def set_user
return nil if session[:user_id].nil?
@user = db.xquery("SELECT * From users WHERE id = ?", session[:user_id]).to_a.first
end
def login?
!session[:user_id].nil?
end
class LoginApp < Sinatra::Base
enable :sessions
set :public_folder, File.dirname(__FILE__) + '/public'
get '/' do
set_user
erb :index
end
get 'signup' do
redirect '/' if login?
erb :signup
end
post 'signup' do
redirect '/' if login?
name = params[:name]
email = params[:email]
password = params[:password]
db.xquery('INSERT INTO users (name, email, password) VALUES (?,?,?)', name, email, password)
session[:user_id] = db.last_id
redirect '/'
end
get '/login' do
redirect '/' if login?
erb :login
end
post '/login' do
email = params[:email]
password = params[:password]
user = db.xquery("SELECT * FROM users where email = ? and password = ?",email, password).to_a.first
if user
session[:user_id] = user[:id]
redirect '/'
else
erb :login
end
end
get '/logout' do
session[:user_id] = nil
redirect '/'
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment