From 48822cc0b1ac7c44ebf5ff44db1f6a0a8a820436 Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Sat, 9 Mar 2019 09:18:53 +0700 Subject: [PATCH] WIP create invites via API --- app/controllers/api/v1/invites_controller.rb | 18 +++++++++++++++++ app/serializers/rest/invite_serializer.rb | 21 ++++++++++++++++++++ config/routes.rb | 1 + 3 files changed, 40 insertions(+) create mode 100644 app/controllers/api/v1/invites_controller.rb create mode 100644 app/serializers/rest/invite_serializer.rb diff --git a/app/controllers/api/v1/invites_controller.rb b/app/controllers/api/v1/invites_controller.rb new file mode 100644 index 000000000..053945c8d --- /dev/null +++ b/app/controllers/api/v1/invites_controller.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class Api::V1::InvitesController < Api::BaseController + + before_action -> { doorkeeper_authorize! :write, :'write:accounts' } + before_action :require_user! + + respond_to :json + + def create + @invite = Invite.new(max_uses: 1) + @invite.user = current_user + @invite.save! + + render json: @invite, serializer: REST::InviteSerializer + end + +end diff --git a/app/serializers/rest/invite_serializer.rb b/app/serializers/rest/invite_serializer.rb new file mode 100644 index 000000000..62d487cdf --- /dev/null +++ b/app/serializers/rest/invite_serializer.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class REST::InviteSerializer < ActiveModel::Serializer + attributes :id, :code, :expires_at, :max_uses + + def id + object.id.to_s + end + + def code + object.code + end + + def expires_at + object.expires_at + end + + def max_uses + object.max_uses + end +end diff --git a/config/routes.rb b/config/routes.rb index af49845cc..37d5b03a0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -297,6 +297,7 @@ Rails.application.routes.draw do resources :reports, only: [:create] resources :filters, only: [:index, :create, :show, :update, :destroy] resources :endorsements, only: [:index] + resources :invites, only: [:create] namespace :apps do get :verify_credentials, to: 'credentials#show'