diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index ea17b56..2cf6eb9 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -1,12 +1,45 @@ class Api::V1::UsersController < Api::V1::ApiController + class ForbiddenError < StandardError; end + def create @user = User.new(user_params) - render :create, status: :created if @user.save! + + token = Doorkeeper::AccessToken.create!( + application_id: nil, + resource_owner_id: @user.id, + expires_in: 30.days, + scopes: 'public' + ).token + + if @user.save! + @presenter = { + user_id: @user.id, + username: @user.username, + token: token + } + + render :create, status: :created + end end - def email_available - @available = User.where("email = ?", params[:email]).count == 0 - render :email_available + def check_email + if params[:email].present? + @available = User.where("email = ?", params[:email]).count == 0 + else + @available = false + end + + render :available + end + + def check_username + if params[:username].present? + @available = User.where("username = ?", params[:username]).count == 0 + else + @available = false + end + + render :available end def show diff --git a/config/routes.rb b/config/routes.rb index 581484e..6ef66d0 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,12 +3,15 @@ Rails.application.routes.draw do controllers :tokens => 'tokens' skip_controllers :applications, :authorized_applications end - + namespace :api, defaults: { format: :json } do namespace :v1 do resources :parties, only: [:index, :create, :show, :destroy] - resources :users, only: [:create, :show] resources :search, only: [:index] + resources :users, only: [:create, :show] + + post 'check/email', to: 'users#check_email' + post 'check/username', to: 'users#check_username' post 'weapons', to: 'grid_weapons#create' delete 'weapons', to: 'grid_weapons#destroy'