2. rails generate controller Api/V1/Api
3. create a user model (User.rb)
4. ApiController
5. ApplicationController
6. routes.rb
namespace :api do
namespace :v1 do
devise_scope :user do
post "/sign_in", :to => 'sessions#create'
post "/sign_up", :to => 'registrations#create'
get "/sign_up", :to => 'registrations#create'
put '/change_password', to: 'registrations#change_password'
get "/profile", :to => 'registrations#profile'
post "/update_account", :to => 'registrations#update'
# delete "/sign_out", :to => 'sessions#destroy'
# get "/reset_password", :to => 'registrations#reset_password'
# get "/reset_password_link", :to => 'registrations#reset_password_link'
end
end
end
Flow of registration controller :=>
Sign Up
1.
routes.rb
post "/sign_up", :to => 'registrations#create'
get "/users", :to => 'registrations#index'
2.
registrations_controller.rb
class Api::V1::RegistrationsController < Api::V1::ApiController
/*-------------------------------------- Create -------------------------------------------------*/
def new
user = User.new
end
def create
user = User.new(registration_params)
if user.save
return render json: {status: 200, data: {user: user}, :message
=>"Successfuly Signup"}
else
warden.custom_failure!
return render json: {status: 401, data: {user: nil, errors:
user.errors}, :message =>"SignUp Rollback"}
end
end
/*-------------------------------------- Index -------------------------------------------------*/
def index
user = User.all
if user.present?
return render json: {status: 200, data: {user: user}, :message =>"All
Users"}
else
return render json: {status: 401, data: {user: nil, errors: user.errors},
:message =>" Rollback"}
end
end
/*-------------------------------------- Update -------------------------------------------------*/
first select which user update so please select user token
def update
user = current_user
if params[:user][:email].present?
user.email = params[:user][:email]
end
if params[:user][:password].present?
user.password = params[:user][:password]
end
if user.save
return render json: {status: 200, data: {user: user}, :message
=>"User Profile Successfully Updated"}
end
end
/*-------------------------------------- Destroy -------------------------------------------------*/
def destroy
end
end
3.
sessions_controller.rb
class Api::V1::SessionsController < Api::V1::ApiController
def create
email = params[:user][:email]
password = params[:user][:password]
@user = User.where(email: email).first
return render json: {status: 200, data: {user: @user}, message:
"Login Successful"}
end
def destroy
end
end