mirror of
https://github.com/System-End/identity-vault.git
synced 2026-04-19 16:28:21 +00:00
77 lines
1.9 KiB
Ruby
77 lines
1.9 KiB
Ruby
class Backend::ProgramsController < Backend::ApplicationController
|
|
before_action :set_program, only: [ :show, :edit, :update, :destroy ]
|
|
|
|
def index
|
|
authorize Program
|
|
@programs = policy_scope(Program).includes(:identities).order(:name)
|
|
end
|
|
|
|
def show
|
|
authorize @program
|
|
@identities_count = @program.identities.distinct.count
|
|
end
|
|
|
|
def new
|
|
@program = Program.new
|
|
authorize @program
|
|
end
|
|
|
|
def create
|
|
@program = Program.new(program_params)
|
|
authorize @program
|
|
|
|
if params[:oauth_application] && params[:oauth_application][:redirect_uri].present?
|
|
@program.redirect_uri = params[:oauth_application][:redirect_uri]
|
|
end
|
|
|
|
if @program.save
|
|
redirect_to backend_program_path(@program), notice: "Program was successfully created."
|
|
else
|
|
render :new, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
def edit
|
|
authorize @program
|
|
end
|
|
|
|
def update
|
|
authorize @program
|
|
|
|
if params[:oauth_application] && params[:oauth_application][:redirect_uri].present?
|
|
@program.redirect_uri = params[:oauth_application][:redirect_uri]
|
|
end
|
|
|
|
if @program.update(program_params_for_user)
|
|
redirect_to backend_program_path(@program), notice: "Program was successfully updated."
|
|
else
|
|
render :edit, status: :unprocessable_entity
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
authorize @program
|
|
@program.destroy
|
|
redirect_to backend_programs_path, notice: "Program was successfully deleted."
|
|
end
|
|
|
|
private
|
|
|
|
def set_program
|
|
@program = Program.find(params[:id])
|
|
end
|
|
|
|
def program_params
|
|
params.require(:program).permit(:name, :description, :active, scopes_array: [])
|
|
end
|
|
|
|
def program_params_for_user
|
|
permitted_params = [ :name, :redirect_uri ]
|
|
|
|
if policy(@program).update_scopes?
|
|
permitted_params += [ :description, :active, scopes_array: [] ]
|
|
end
|
|
|
|
params.require(:program).permit(permitted_params)
|
|
end
|
|
end
|