Sprankelprachtig aan/afmeldsysteem

people_controller.rb 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. class PeopleController < ApplicationController
  2. before_action :set_person, only: [:show, :edit, :update, :destroy]
  3. before_action :require_login!
  4. before_action :require_admin!, except: [:show]
  5. # GET /people
  6. # GET /people.json
  7. def index
  8. @people = Person.all
  9. end
  10. # GET /people/1
  11. # GET /people/1.json
  12. def show
  13. if @person != current_person
  14. require_admin!
  15. end
  16. end
  17. # GET /people/new
  18. def new
  19. @person = Person.new
  20. end
  21. # GET /people/1/edit
  22. def edit
  23. end
  24. # POST /people
  25. # POST /people.json
  26. def create
  27. @person = Person.new(person_params)
  28. respond_to do |format|
  29. if @person.save
  30. format.html do
  31. flash_message(:success, I18n.t('person.created'))
  32. redirect_to @person
  33. end
  34. format.json { render :show, status: :created, location: @person }
  35. else
  36. format.html { render :new }
  37. format.json { render json: @person.errors, status: :unprocessable_entity }
  38. end
  39. end
  40. end
  41. def mass_new
  42. end
  43. def mass_create
  44. require 'csv'
  45. uploaded_io = params[:spreadsheet]
  46. result = Person.from_csv(uploaded_io.read)
  47. flash_message(:success, "#{result.count} people created")
  48. redirect_to :people
  49. end
  50. # PATCH/PUT /people/1
  51. # PATCH/PUT /people/1.json
  52. def update
  53. respond_to do |format|
  54. if @person.update(person_params)
  55. format.html do
  56. flash_message(:success, I18n.t('person.updated'))
  57. redirect_to @person
  58. end
  59. format.json { render :show, status: :ok, location: @person }
  60. else
  61. format.html { render :edit }
  62. format.json { render json: @person.errors, status: :unprocessable_entity }
  63. end
  64. end
  65. end
  66. # DELETE /people/1
  67. # DELETE /people/1.json
  68. def destroy
  69. @person.destroy
  70. respond_to do |format|
  71. format.html do
  72. flash_message(:success, I18n.t('person.destroyed'))
  73. redirect_to people_url
  74. end
  75. format.json { head :no_content }
  76. end
  77. end
  78. private
  79. # Use callbacks to share common setup or constraints between actions.
  80. def set_person
  81. @person = Person.find(params[:id])
  82. end
  83. # Never trust parameters from the scary internet, only allow the white list through.
  84. def person_params
  85. params.require(:person).permit(:first_name, :infix, :last_name, :email, :birth_date, :is_admin)
  86. end
  87. end