require_relative '../models/users_db'
class WebGui < Sinatra::Base
+
+ class WebError < StandardError
+ attr_reader :status
+ def initialize(status)
+ @status = status
+ end
+ end
+
set :root, File.join(File.dirname(__FILE__), '..')
set :views, Proc.new {File.join(root, "views")}
set :haml, :format => :html5
-
+ set :environment, :production
+
use Rack::Session::Cookie,
:expire_after => 300,
:secret => 'change'
session[:userId] = id;
redirect "/user_home"
rescue UserAccount::AlreadyInstanceError
- status 406
- "すでに登録済みのアカウント名が指定されています。"
+ raise WebError.new(406),
+ "すでに登録済みのアカウント名が指定されています。"
end
end
redirect "/user_home"
rescue UserAccount::NotfondInstanceError,
UserAccount::AuthenticationError
- status 401
- "認証に失敗しました アカウント、 パスワードを確認してください。"
+ raise WebError.new(401),
+ "認証に失敗しました アカウント、 パスワードを確認してください。"
end
end
get '/user_home' do
id = session[:userId]
+ if (id == nil)
+ raize WebError.new(408),
+ "セッション期限切れです。再ログインをしてください。"
+ end
user = UserAccount.getUser(id)
@id = id
@username = user.full_name
haml :logout
end
+ error WebError do
+ e = env['sinatra.error']
+ status e.status
+ @error_message = e.message
+ haml :error
+ end
end