-
Notifications
You must be signed in to change notification settings - Fork 8
/
app.rb
44 lines (34 loc) · 1.06 KB
/
app.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# frozen_string_literal: true
require 'sinatra'
require 'sinatra/jsonapi'
# Load the Sequel helpers without registering the extension.
require 'sinja/sequel/helpers'
require_relative 'classes/author'
require_relative 'classes/comment'
require_relative 'classes/post'
require_relative 'classes/tag'
[Author, Comment, Post, Tag].tap do |model_classes|
model_classes.each(&:finalize_associations)
model_classes.each(&:freeze)
end
DB.freeze
configure :development, :test do
set :server_settings, AccessLog: [] # avoid WEBrick double-logging issue
end
helpers Sinja::Sequel::Helpers do
def current_user
# TESTING/DEMO PURPOSES ONLY -- DO NOT DO THIS IN PRODUCTION
@current_user ||= Author.first_by_email(env['HTTP_X_EMAIL']) if env.key?('HTTP_X_EMAIL')
end
def role
return unless current_user
[:logged_in].tap do |a|
a << :superuser if current_user.admin?
end
end
end
resource :authors, &AuthorController
resource :comments, &CommentController
resource :posts, pkre: /[\w-]+/, &PostController
resource :tags, &TagController
freeze_jsonapi