Install Rails' authentication generator #142
@ -9,7 +9,7 @@ class PasswordsController < ApplicationController
|
|||||||
PasswordsMailer.reset(user).deliver_later
|
PasswordsMailer.reset(user).deliver_later
|
||||||
end
|
end
|
||||||
|
|
||||||
render json: {}, status: :ok
|
render json: {}, status: :created
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
@ -25,6 +25,6 @@ class PasswordsController < ApplicationController
|
|||||||
def set_user_by_token
|
def set_user_by_token
|
||||||
@user = User.find_by_password_reset_token!(params[:token])
|
@user = User.find_by_password_reset_token!(params[:token])
|
||||||
rescue ActiveSupport::MessageVerifier::InvalidSignature
|
rescue ActiveSupport::MessageVerifier::InvalidSignature
|
||||||
redirect_to new_password_path, alert: 'Password reset link is invalid or has expired.'
|
render json: { errors: ['Password reset link is invalid or has expired.'] }, status: :unprocessable_entity
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
40
spec/requests/passwords_spec.rb
Normal file
40
spec/requests/passwords_spec.rb
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
require 'swagger_helper'
|
||||||
|
|
||||||
|
RSpec.describe 'passwords', type: :request do
|
||||||
|
path '/passwords' do
|
||||||
|
post('send a password (re)set email') do
|
||||||
|
tags 'Passwords'
|
||||||
|
consumes 'application/json'
|
||||||
|
produces 'application/json'
|
||||||
|
parameter name: :body, in: :body, schema: {
|
||||||
|
type: :object,
|
||||||
|
required: [:email_address],
|
||||||
|
properties: {
|
||||||
|
email_address: { type: :string, format: :email }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
response_empty_201
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
path '/passwords/{token}' do
|
||||||
|
parameter name: 'token', in: :path, type: :string, description: 'token'
|
||||||
|
put('update password') do
|
||||||
|
tags 'Passwords'
|
||||||
|
consumes 'application/json'
|
||||||
|
produces 'application/json'
|
||||||
|
parameter name: :body, in: :body, schema: {
|
||||||
|
type: :object,
|
||||||
|
required: %i[password password_confirmation],
|
||||||
|
properties: {
|
||||||
|
password: { type: :string },
|
||||||
|
password_confirmation: { type: :string }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
response_empty_200
|
||||||
|
response_422
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
29
spec/requests/sessions_spec.rb
Normal file
29
spec/requests/sessions_spec.rb
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
require 'swagger_helper'
|
||||||
|
|
||||||
|
RSpec.describe 'sessions', type: :request do
|
||||||
|
path '/session' do
|
||||||
|
delete('delete session') do
|
||||||
|
tags 'Sessions'
|
||||||
|
produces 'application/json'
|
||||||
|
response_empty_200
|
||||||
|
end
|
||||||
|
|
||||||
|
post('create session') do
|
||||||
|
tags 'Sessions'
|
||||||
|
consumes 'application/json'
|
||||||
|
produces 'application/json'
|
||||||
|
parameter name: :body, in: :body, schema: {
|
||||||
|
type: :object,
|
||||||
|
required: %i[email_address password],
|
||||||
|
properties: {
|
||||||
|
email_address: { type: :string, format: :email },
|
||||||
|
password: { type: :string }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
response_empty_201
|
||||||
|
response_401
|
||||||
|
response_429
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -9,6 +9,22 @@ module SwaggerResponseHelper
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def response_429
|
||||||
|
response(429, 'Rate limit exceeded') do
|
||||||
|
produces 'application/json'
|
||||||
|
error_schema
|
||||||
|
xit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def response_401
|
||||||
|
response(401, 'Unauthorized') do
|
||||||
|
produces 'application/json'
|
||||||
|
error_schema
|
||||||
|
xit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def response_empty_200
|
def response_empty_200
|
||||||
response(200, 'Success') do
|
response(200, 'Success') do
|
||||||
produces 'application/json'
|
produces 'application/json'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user