refactor(api): create api_token with validity and network filtering
This commit is contained in:
parent
943368c68f
commit
852eedbc50
3 changed files with 184 additions and 9 deletions
|
@ -3,11 +3,11 @@ class APITokensController < ApplicationController
|
|||
before_action :set_api_token, only: [:destroy]
|
||||
|
||||
def nom
|
||||
@name = params[:name]
|
||||
@name = name
|
||||
end
|
||||
|
||||
def autorisations
|
||||
@name = params[:name]
|
||||
@name = name
|
||||
@libelle_id_procedures = current_administrateur
|
||||
.procedures
|
||||
.order(:libelle)
|
||||
|
@ -21,7 +21,8 @@ class APITokensController < ApplicationController
|
|||
def create
|
||||
@api_token, @packed_token = APIToken.generate(current_administrateur)
|
||||
|
||||
render :index
|
||||
@api_token.update!(name:, write_access:,
|
||||
allowed_procedure_ids:, authorized_networks:, expires_at:)
|
||||
end
|
||||
|
||||
def destroy
|
||||
|
@ -32,19 +33,56 @@ class APITokensController < ApplicationController
|
|||
|
||||
private
|
||||
|
||||
def authorized_networks
|
||||
if params[:networkFiltering] == "customNetworks"
|
||||
networks
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
def networks
|
||||
params[:networks]
|
||||
.split
|
||||
.map { begin IPAddr.new(_1) rescue nil end }
|
||||
.compact
|
||||
end
|
||||
|
||||
def set_api_token
|
||||
@api_token = current_administrateur.api_tokens.find(params[:id])
|
||||
end
|
||||
|
||||
def become_full_access?
|
||||
api_token_params[:become_full_access].present?
|
||||
def name
|
||||
params[:name]
|
||||
end
|
||||
|
||||
def disallow_procedure_id
|
||||
api_token_params[:disallow_procedure_id]
|
||||
def write_access
|
||||
params[:access] == "read_write"
|
||||
end
|
||||
|
||||
def api_token_params
|
||||
params.require(:api_token).permit(:name, :write_access, :become_full_access, :disallow_procedure_id, allowed_procedure_ids: [])
|
||||
def allowed_procedure_ids
|
||||
if params[:target] == "custom"
|
||||
current_administrateur
|
||||
.procedure_ids
|
||||
.intersection(params[:targets].map(&:to_i))
|
||||
else
|
||||
nil
|
||||
end
|
||||
end
|
||||
|
||||
def expires_at
|
||||
case params[:lifetime]
|
||||
in 'oneWeek'
|
||||
1.week.from_now.to_date
|
||||
in 'custom'
|
||||
[
|
||||
Date.parse(params[:customLifetime]),
|
||||
1.year.from_now
|
||||
].min
|
||||
in 'infinite' if authorized_networks.present?
|
||||
nil
|
||||
else
|
||||
1.week.from_now.to_date
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue