From 12a98d4abd027f05d1239963566ff01dbd8a4f99 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 25 Sep 2020 10:53:56 -0700 Subject: [PATCH] Update UsersController Adds registration, check_email, and check_username methods --- app/controllers/api/v1/users_controller.rb | 41 +++++++++++++++++++--- config/routes.rb | 7 ++-- 2 files changed, 42 insertions(+), 6 deletions(-) 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'