2021-03-08(Mon)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-03-08(์›”)

ํ•™์Šต ์‹œ๊ฐ„

11:00~24:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

Admin ๋ชจ๋“ˆ

ํ•™์Šต ๋ชฉํ‘œ

Admin PR ๋ฆฌ๋ทฐ์— ๋Œ€์‘ํ•œ๋‹ค.

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

eunhkim๋‹˜๊ณผ ํŽ˜์–ด์ฝ”๋”ฉ ์ง„ํ–‰

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

eunhkim๋‹˜๊ณผ ํ•จ๊ป˜ admin ๋ชจ๋“ˆ์˜ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ์˜ ์‹ฑํฌ๋ฅผ ๋งž์ถ”๋Š” ์ž‘์—…์„ ํ•˜์˜€๋‹ค.

์ฑ„ํŒ…๋ฃธ์˜ ์œ ์ € ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ์˜ ๋™์ž‘์— ๋Œ€ํ•ด์„œ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ณด๋‹ˆ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋˜์—ˆ๋‹ค. ์ดํ›„ ์•„๋ž˜ PR ๋‚ด์šฉ์— ํ•ด๋‹นํ•˜๋Š” ์ž‘์—…์„ ๋งˆ์ณค๋‹ค.

์ž‘์—…๋‚ด์šฉ or ์ด์Šˆ๋งํฌ

image

Admin ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • user ํ…Œ์ด๋ธ”์˜ position ์ปฌ๋Ÿผ ๊ฐ’์ด web_owner์ด๊ฑฐ๋‚˜ web_admin์ธ ๊ฒฝ์šฐ 'service_manage'๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๊ฐ„์ฃผํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • 'service_manage'๊ฐ€ ๊ฐ€๋Šฅํ•œ ์œ ์ €๋Š” ์šฐ์ธก ํ•˜๋‹จ์— admin๋ฒ„ํŠผ์ด ํ‘œ์‹œ๋˜๊ณ , ์ด ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ Admin ํŽ˜์ด์ง€๋กœ ์ง„์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Admin Index ํŽ˜์ด์ง€

api/admin/db ๋ผ์šฐํ„ฐ URL์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด URL๋กœ GET ์š”์ฒญ์„ ๋‚ ๋ฆฌ๋ฉด Admin index ํŽ˜์ด์ง€ ๋ Œ๋”๋ง์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‘๋‹ต๋ฉ๋‹ˆ๋‹ค. ๊ตณ์ด ๋ผ์šฐํ„ฐ URL์„ ์ถ”๊ฐ€ํ•œ ์ด์œ ๋Š” 1) ๊ฐ ์ž์›๋ณ„๋กœ ์š”์ฒญ์„ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ์ด ๋ฒˆ๊ฑฐ๋กญ๊ณ , 2) admin ํŽ˜์ด์ง€๋Š” ํŠน์ˆ˜ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์กฐ์ž‘ํ•˜๊ณ ์ž ํ•˜๋Š” ์ž์›์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด action๊ณผ resource, membership, position์ด ๊ฐ ์ž์›์˜ ์„ฑ๊ฒฉ์— ๋งž๊ฒŒ ์…‹ํŒ…๋ฉ๋‹ˆ๋‹ค. ๋•๋ถ„์— ํ•˜๋‚˜์˜ UI๋กœ ์—ฌ๋Ÿฌ ์ž์›์„ ์ปจํŠธ๋กค ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์€ํœผ์งฑ ์™„์ „ ๊ตฟ๊ตฟ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค!

๊ฐ admin ๋ฒ„ํŠผ

  1. ์œ ์ €

  • ์œ ์ € ๊ถŒํ•œ ๋ณ€๊ฒฝํ•˜๊ธฐ

    • ์œ ์ €์˜ ๊ถŒํ•œ์„ web_admin, user๋กœ ๋ณ€๊ฒฝ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ์œ ์ € ์ ‘์† ๊ธˆ์ง€ํ•˜๊ธฐ

    • ํŠน์ • ์œ ์ €๊ฐ€ ์ ‘์†ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๊ณ , ๋กœ๊ทธ์•„์›ƒ์‹œํ‚ต๋‹ˆ๋‹ค(ban)

    • ์„œ๋ธŒ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ, ban ๋‹นํ•œ ์œ ์ €๋ฅผ ์ฑ—๋ฃธ, ๊ธธ๋“œ ๋“ฑ์—์„œ ๋‚˜๊ฐ€๊ฑฐ๋‚˜ ํƒˆํ‡ดํ•˜๋Š” ๋™์ž‘์€ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

  1. ์ฑ„ํŒ… ์ฑ„๋„

  • ๊ทธ๋ฃน ์ฑ— ๋Œ€ํ™”๋‚ด์—ญ ๋ณด๊ธฐ

    • ๋ Œ๋”๋งํ•  ๋Œ€ํ™”๊ฐ€ ์—†์œผ๋ฉด ๋ Œ๋”๋งํ•  ๋Œ€ํ™”๊ฐ€ ์—†๋‹ค๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  • ๊ทธ๋ฃน ์ฑ— ์ฑ„๋„ ์‚ญ์ œํ•˜๊ธฐ

    • ํ•ด๋‹น ์ฑ—๋ฃธ์— ์ฐธ์—ฌํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์œ ์ €๋ฅผ ๋‚ด๋ณด๋‚ธ ํ›„ ์ฑ—๋ฃธ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

  1. ์ฑ„ํŒ… ๋ฉค๋ฒ„์‹ญ

  • ๊ทธ๋ฃน ์ฑ— ๋ฉค๋ฒ„์‹ญ ๋ณ€๊ฒฝํ•˜๊ธฐ

    • ๊ทธ๋ฃน ์ฑ— ๋ฉค๋ฒ„์‹ญ์˜ position์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    • ์ฑ—๋ฃธ์—๋Š” ๋ฐ˜๋“œ์‹œ 1๋ช…์˜ owner๊ฐ€ ์กด์žฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋“ค์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

      • ๋งŒ์•ฝ ํŠน์ • ์œ ์ €๋ฅผ owner๋กœ ์ž„๋ช…ํ•œ๋‹ค๋ฉด, ๊ธฐ์กด์˜ owner๋ฅผ ์ฑ—๋ฃธ์—์„œ ๋‚ด๋ณด๋‚ด๋ฉฐ ๋™์‹œ์— member๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” owner์˜€๋˜ ์œ ์ €๊ฐ€ ์—ฌ์ „ํžˆ owner์—๊ฒŒ ํ—ˆ์šฉ๋œ ๋ฉ”๋‰ด ๋“ฑ์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

      • ๋งŒ์•ฝ owner์˜€๋˜ ์œ ์ €๋ฅผ ๋‹ค๋ฅธ position์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค๋ฉด, ๋˜ ๋‹ค๋ฅธ ์œ ์ €๊ฐ€ owner๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ owner์˜€๋˜ ์œ ์ €๊ฐ€ 1๋ช…์ด์˜€๋‹ค๋ฉด, ๋‹ค๋ฅธ position์œผ๋กœ ๋ณ€๊ฒฝ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค๊ณ  ์•ˆ๋‚ด๋ฉ๋‹ˆ๋‹ค.

  • ๊ทธ๋ฃน ์ฑ— ๋ฉค๋ฒ„ ์ œ๋ช…ํ•˜๊ธฐ

    • owner๋ฅผ ์ œ๋ช…ํ•  ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์œ ์ €๋ฅผ owner๋กœ ์ž„๋ช…ํ•˜๊ณ  ์ œ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    • ๋งŒ์•ฝ ์ฑ—๋ฃธ์— 1๋ช… ๋‚จ์€ ๋ฉค๋ฒ„๋ฅผ ์ œ๋ช…ํ•œ ์ƒํ™ฉ์ด์—ˆ๋‹ค๋ฉด, ํ•ด๋‹น ์œ ์ €๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  ์ฑ—๋ฃธ์ด ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.

  1. ๊ธธ๋“œ ๋ฉค๋ฒ„์‹ญ

  • ๊ธธ๋“œ ๋ฉค๋ฒ„์‹ญ ๋ณ€๊ฒฝํ•˜๊ธฐ

    • ์ฑ—๋ฃธ์˜ owner์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธธ๋“œ์˜ master๋„ ๋ฐ˜๋“œ์‹œ 1๋ช… ์กด์žฌํ•ด์•ผํ•˜๋ฏ€๋กœ, ์ฑ—๋ฃธ์—์„œ ๋‚ด๋ณด๋‚ด๋Š” ๋™์ž‘๋งŒ ํ•˜์ง€ ์•Š์„ ๋ฟ ๋Œ€๋ถ€๋ถ„ ๋น„์Šทํ•˜๊ฒŒ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธธ๋“œ ๋ฉค๋ฒ„ ์ œ๋ช…ํ•˜๊ธฐ

    • ์ฑ—๋ฃธ์˜ owner์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธธ๋“œ์˜ master๋„ ๋ฐ˜๋“œ์‹œ 1๋ช… ์กด์žฌํ•ด์•ผํ•˜๋ฏ€๋กœ, ์ฑ—๋ฃธ์—์„œ ๋‚ด๋ณด๋‚ด๋Š” ๋™์ž‘๋งŒ ํ•˜์ง€ ์•Š์„ ๋ฟ ๋Œ€๋ถ€๋ถ„ ๋น„์Šทํ•˜๊ฒŒ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  1. ํ† ๋„ˆ๋จผํŠธ ํ† ๋„ˆ๋จผํŠธ ์ƒ์„ฑ ํŽ˜์ด์ง€๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

๊ตฌํ˜„๋ฐฉ๋ฒ•

admin์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ

admin ์ปจํŠธ๋กค๋Ÿฌ์—๋Š” admin์ด ์•„๋‹Œ ์œ ์ €๊ฐ€ ์š”์ฒญ ๋‚ ๋ฆฌ๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด current_user_is_admin_or_owner?์œผ๋กœ ๊ถŒํ•œ๊ฒ€์‚ฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์š”์ฒญ์˜ HTTP_ADMIN ํ—ค๋”๋ฅผ ๊ฒ€์‚ฌ์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ด์‚ฌํ•ญ

๋”ฑํžˆ ์—†์Šต๋‹ˆ๋‹ค.

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

๊ทธ๋ฃน ์ฑ—๊ณผ ๊ธธ๋“œ ๋ฉค๋ฒ„์‹ญ ๊ด€๋ จํ•ด์„œ ์—ฐ๊ด€ ๊ฐ์ฒด destroy ๊ด€๋ จ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š”๊ฒŒ ์ƒ๋‹นํžˆ ๋ฒˆ๊ฑฐ๋กœ์› ๋‹ค. ๊ถŒํ•œ ๋ณ€๊ฒฝ์ด ํ”„๋ก ํŠธ์—”๋“œ์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์˜๋˜๋„๋ก ๊ตฌํ˜„ํ•˜๋ ค๋‹ค๋ณด๋‹ˆ ๋‚œ์ด๋„๊ฐ€ ์ข€ ๋” ์˜ฌ๋ผ๊ฐ„ ๋А๋‚Œ! ํŠนํžˆ '์ฑ—๋ฃธ, ๊ธธ๋“œ์— owner๋Š” ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผํ•œ๋‹ค'๋Š” ์ œ์•ฝํ•˜์— ์ฑ—๋ฃธ์— ํฌํ•จ๋˜์–ด์žˆ๋Š” ์œ ์ €๋“ค์„ owner๋กœ ์ž„๋ช…ํ•˜๊ฑฐ๋‚˜ ์ฑ—๋ฃธ์—์„œ kickํ•˜๋Š” ๋™์ž‘ ๊ตฌํ˜„์˜ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ๊นŒ๋‹ค๋กœ์› ๋‹ค. ActionCable ๊ฐ™์€ ์›น์†Œ์ผ“ ๊ด€๋ จ๋œ ๋ฉ”์„œ๋“œ๋“ค์€ ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•˜๋Š” ๊ฑธ๊นŒ.. ๊ฐˆ ๊ธธ์ด ๋ฉ€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฑ—๋ฃธ์— web_owner, web_admin ๊ฐ™์€ 'super' ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์œ ์ €๋“ค์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฆฌํŒฉํ† ๋ง์„ ๋งŽ์ด ์ง„ํ–‰ํ–ˆ๋‹ค. ์œ ์ € ๊ถŒํ•œ ๊ด€๋ จํ•˜์—ฌ cancancan ๊ฐ™์€ gem์ด ์™œ ๋”ฐ๋กœ ์žˆ๋Š”์ง€ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • ๋ฐฑ์—”๋“œ ๋ฆฌํŒฉํ† ๋ง, docker-compose up ์ปค๋งจ๋“œ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž‘๋™๊ฐ€๋Šฅํ•œ ์ƒํƒœ ๋งŒ๋“ค๊ธฐ

Last updated

Was this helpful?