Upgrade to Pro — share decks privately, control downloads, hide ads and more …

gotandarb-41

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers. →
Avatar for kanjihtmt kanjihtmt
January 30, 2020

 gotandarb-41

Avatar for kanjihtmt

kanjihtmt

January 30, 2020

Other Decks in Technology

Transcript

  1. ٕज़બఆͯ͠Ұ൪ཁ݅ʹϚονͨ͠ɻ͍͢͝γϯϓϧͰߦ͙Β͍͔͠ͳ͍ɻ 1VOEJU ॏཁͳͷ͸̎ͭͷϑΝΠϧ ɾQPMJDZ@pOEFSSC ϙϦγʔΛهड़ͨ͠ϑΝΠϧΛ୳͢  ɾQVOEJUSC ϙϦγʔΛద༻͢ΔϔϧύʔϝιουͱίΞػೳ  ɾͦͷଞ͸δΣωϨʔλͱ͔34QFDͷϚονϟʔ͙Β͍

    DMPDMJC HJUIVCDPN"M%BOJBMDMPDW5T pMFTT MJOFTT   -BOHVBHFpMFTCMBOLDPNNFOUDPEF  3VCZ  46. 
  2. ̎ͭͷ֓೦ ɾϙϦγʔ ɹɾίϯτϩʔϥͷΞΫγϣϯͷݖݶΛఆٛ ɹɾJOEFY TIPX OFX FEJU DSFBUF VQEBUF EFTUSPZ

     ɾείʔϓ ɹɾΞΫηεͰ͖ͳ͍ϨίʔυΛؒҾ͘ ɹɾ4DPQFΫϥεͷSFTPMWFϝιου಺ͰϩʔϧʹϚονͨ͠ ɹɹ৚݅จΛॻ͘
  3. ಋೖ FDIPHFNQVOEJU(FNpMF CJOCVOEMFJOTUBMM ϙϦγʔΛఆٛ͢ΔϙϦγʔϑΝΠϧΛ֨ೲ͢ΔBQQQPMJDJFTσΟϨΫτϦͱ1PMJDZͷεʔύʔΫϥεΛ࡞੒ CJOSBJMTHQVOEJUJOTUBMM 3VOOJOHWJB4QSJOHQSFMPBEFSJOQSPDFTT DSFBUFBQQQPMJDJFTBQQMJDBUJPO@QPMJDZSC ϙϦγʔϑΝΠϧ͸δΣωϨʔλͰͻͳܗΛ࡞੒ CJOSBJMTHQVOEMJUQPMJDZ4UPSF 3VOOJOHWJB4QSJOHQSFMPBEFSJOQSPDFTT

    DSFBUFBQQQPMJDJFTTUPSF@QPMJDZSC QVOEJUJOTUBMM࣌ʹੜ੒͞Εͨ"QQMJDBUJPO1PMJDZΛܧঝͨ͠ϙϦγʔϑΝΠϧʹϝιουΛఆ͍ٛͯ͘͠ DBUBQQQPMJDJFTTUPSF@QPMJDZSC DMBTT4UPSF1PMJDZ"QQMJDBUJPO1PMJDZ DMBTT4DPQF4DPQF EFGSFTPMWF TDPQFBMM FOE FOE FOE
  4. ϙϦγʔͷఆٛ ؅ཧऀͷΈ͔͠ΞΫηεͰ͖ͳ͍৔߹ DMBTT4UPSF1PMJDZ"QQMJDBUJPO1PMJDZ EFGJOEFY  VTFSBENJOJTUSBUPS ccVTFSNBOBHFS  FOE EFGDSFBUF

     VTFSBENJOJTUSBUPS  FOE EFGOFX  DSFBUF  FOE EFGVQEBUF  VTFSBENJOJTUSBUPS  FOE EFGFEJU  VQEBUF  FOE EFGEFTUSPZ  VTFSBENJOJTUSBUPS  FOE FOE w σϑΥϧτͷϙϦγʔ͕ఆٛ͞Εͨ"QQMJDBUJPO1PMJDZΛ ܧঝ͢Δ w ͲͷΞΫγϣϯʹΞΫηεՄೳ͔ΛϝιουͰఆٛ w ϩάΠϯϢʔβ৘ใ DVSSFOU@VTFS ͸"QQMJDBUJPO1PMJDZ Ͱ!VTFSΠϯελϯεม਺ʹೖ͍ͬͯΔ w ϩʔϧ͚ͩͰ͸ͳ͘Ϩίʔυͷ಺༰ εςʔλε Ͱ΋੍ ޚ͍ͨ͠৔߹͸ˏSFDPSEΠϯελϯεม਺Λ࢖͏ Ϛωʔδϟ͸ߋ৽ࣗମ͸Մೳ͕ͩެ։ࡁͷσʔλ͸ߋ৽Ͱ͖ͳ͍৔߹౳ EFGVQEBUF  ɹVTFSBENJOJTUSBUPS ccVTFSNBOBHFS SFDPSEESBGU  FOE
  5. είʔϓΛఆٛ DMBTT4UB⒎1PMJDZ"QQMJDBUJPO1PMJDZ EFGJOEFY  VTFSBENJOJTUSBUPS ccVTFSNBOBHFS  FOE EFGDSFBUF 

    VTFSBENJOJTUSBUPS ccVTFSNBOBHFS  FOE DMBTT4DPQF4DPQF EFGSFTPMWF JGVTFSBENJOJTUSBUPS  TDPQFBMM FMTJGVTFSNBOBHFS  TDPQFXIFSF TUPSFVTFSTUPSF  FOE FOE FOE FOE είʔϓ͸σʔλͷநग़Λ੍ޚ͢Δ Ϛωʔδϟ͸ҰཡͰࣗ෼ͷళฮͷ৘ใͷΈΞΫηεՄʹ͍ͨ͠ ৔߹ wTDPQFBMM͸ɺ4UB⒎BMMʹ૬౰ wTDPSFXIFSF TUPSFVTFSTUPSF ͸ɺ 4UB⒎XIFSF TUPSFVTFSTUPSF ʹ૬౰
  6. $POUSPMMFS class Admin::StaffsController < BaseController def index # είʔϓΛ࢖͏ʂ @staffs

    = policy_scope(Staff).page(params[:page]) end def new # ΦϒδΣΫτΛ౉ͤͳ͍࣌͸ɺΫϥεΛࢦఆ͢Δ authorize Staff end def create @staff = Staff.new(staff_params) # ϙϦγʔͰauthorize͢Δ authorize @staff if @staff.save redirect_to admin_staffs_path, notice: ‘ελοϑΛొ࿥͠·ͨ͠’ else render :new end end 7JFX - if policy(Store).index? li = link_to 'ళฮҰཡ', admin_stores_path - if policy(Store).new? li = link_to 'ళฮొ࿥', new_admin_store_path
  7. #BTF$POUSPMMFSΛ࡞ͬͯܧঝ͢Δͱศར class Admin::BaseController < ApplicationController include Pundit ɹˌ ͜Ε͸୯ͳΔDeviseͷϝιου(஫ Pundit͸Deviseʹґଘ͍ͯ͠Δ༁Ͱ͸ͳ͍Ͱ͢)

    before_action :authenticate_admin_staff! # after_actionͰϙϦγʔ΍είʔϓΛఆ͍ٛͯ͠ͳ͚Ε͹ྫ֎͕ൃੜ͢ΔΑ͏ʹͯ͠ݖݶͷઃఆ͠๨ΕΛ๷͙ after_action :verify_authorized after_action :verify_policy_scoped, only: :index # ΞΫηεෆՄͷػೳʹΞΫηεͨ͠৔߹͸ɺྫ֎Λrescueͯ͠ద੾ͳϝοηʔδΛฦ͢Α͏ʹ͢Δ rescue_from Pundit::NotAuthorizedError, with: :not_authorized # Pundit͸σϑΥϧτͰϩάΠϯϢʔβͷऔಘʹcurrent_userͰΞΫηε͢ΔͷͰDeviseͷϢʔβͷϞσϧ͕ ɹˌ UserͰͳ͍৔߹͸pundit_userϝιουΛΦʔόʔϥΠυͯ͠ϩάΠϯϢʔβΛฦ͢ def pundit_user current_admin_staff end private def not_authorized redirect_to request.referer || admin_root_path, ɹɹɹɹɹɹɹɹɹɹ alert: ‘ͦͷػೳʹΞΫηε͢Δݖݶ͕͋Γ·ͤΜ' end end