4. 例) /v1/users API
以下のAPIを定義する
● GET /v1/users・・・ユーザー一覧を返す
● GET /v1/users/:id・・・指定したIDのユーザーを返す
● PUT /v1/users/:id・・・ユーザーリソースを更新する
5. UsersController
class UsersController < ApplicationController
include Garage::RestfulActions
def require_resources
@resources = User.all
end
def require_resource
@resource = User.find(params[:id])
end
def update_resource
@resource.update_attributes!(user_params)
end
end
以下のメソッドを実装することで、リソー
ス一覧取得・リソース取得・リソース更新
等の実装を行う
● require_resources
● require_resource
● create_resource
● update_resource
● destroy_resource
6. User
class User < ActiveRecord::Base
include Garage::Representer
include Garage::Authorizable
property :id
property :name
property :email
def self.build_permissions(perms, other, target)
perms.permits! :read
end
def build_permissions(perms, other)
perms.permits! :read
perms.permits! :write
end
end
プロパティの定義
パーミッションの定義
(自分以外は参照できない・編集できない等 )
9. 設定ファイルの追加
config/initializer/garage.rb
Garage.configure {}
Garage::TokenScope.configure {
register :public, desc: 'accessing publicly availabledata' do
access :read, User
access :write, User
end
}
Doorkeeper.configure do
orm :active_record
default_scopes :public
optional_scopes("Garage::TokenScope.optional_scopes")
resource_owner_from_credentials do |routes|
User.find_by(email: params[:username])
end
end