๐Ÿฆ Python Online Store ๋งŒ๋“ค๊ธฐ 16ํŽธ - ์‚ฌ์šฉ์ž๊ตฌ๋ถ„(๊ด€๋ฆฌ์ž(ํŒ๋งค์ž)/๊ตฌ๋งค์ž)

yohan-record[web]ยท2022๋…„ 8์›” 10์ผ
0

python onlinestore ๊ฐœ๋ฐœ์ผ์ง€

๋ชฉ๋ก ๋ณด๊ธฐ
16/25
post-thumbnail

๐ŸŽˆ Front End Developer ์˜ Back End ๋„์ „๊ธฐ ! ๐ŸŽˆ

์ด ๊ธ€์€ PROJECT LION : ํ˜ธ์ฝ”์น˜ ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ์ฐธ๊ณ ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

์ž‘์—… ์ค‘, ๊ฐœ๋ฐœ๊ณผ์ • ์ •๋ฆฌ ๋ฐ issue๊ฐ€ ๋˜์—ˆ๋˜ ๋ถ€๋ถ„๋“ค์„ ๊ณต์œ  ๋ฐ ๊ธฐ๋กํ•˜๊ณ ์ž ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1. ์‚ฌ์šฉ์ž ๊ตฌ๋ถ„ ๋ฐ ๊ถŒํ•œ

โœ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ„์–ด ๋ณด๊ฒ ๋‹ค.
์‚ฌ์šฉ์ž๋Š” ํŒ๋งค์ž์™€ ๊ตฌ๋งค์ž๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํŒ๋งค์ž๋Š” ์ƒํ’ˆ CRUD๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผํ•˜๋ฉฐ, ๊ตฌ๋งค์ž๋Š” ์ƒํ’ˆ์„ ํ™•์ธํ•˜๊ณ  ๊ตฌ๋งคํ•˜๋Š” ์—ญํ• ์ด๋‹ค.

๋”ฐ๋ผ์„œ, ํŒ๋งค์ž์™€ ๋‹ฌ๋ฆฌ ๊ตฌ๋งค์ž๋Š” ์ƒํ’ˆ์„ ๋ณด๊ฑฐ๋‚˜ ๊ตฌ๋งค๋งŒ ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค.

์‚ฌ์šฉ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ๊ฐ ์‚ฌ์šฉ์ž๋งˆ๋‹ค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด ์š”์ฒญ์„ ์ œํ•œํ•ด์•ผํ•œ๋‹ค.

์šฐ์„ ,
ํŒ๋งค์ž/๊ตฌ๋งค์ž > Users collection document > is_admin key๊ฐ’์„ ๋Œ€์ž…ํ•˜์—ฌ true์ผ ์‹œ ํŒ๋งค์ž, is_admin ๊ฐ’์ด ์—†๊ฑฐ๋‚˜ false์ผ ์‹œ ๊ตฌ๋งค์ž ๋กœ ๊ตฌ๋ถ„ํ•  ๊ฒƒ์ด๋‹ค.

๊ถŒํ•œ์„ ์ƒ์„ฑํ•œ ํ›„, ์ƒํ’ˆ๋“ฑ๋ก ๋ฉ”๋‰ด๋ฅผ ๊ด€๋ฆฌ์ž์ผ ๊ฒฝ์šฐ์—๋งŒ ๋ณด์—ฌ์ง€๊ฒŒ ์ž‘์—…ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

๐Ÿงจ ๊ด€๋ฆฌ์ž/๊ตฌ๋งค์ž ์œ ์ € ๊ตฌ๋ถ„

  1. mongodb Compass ์ ‘์† ๋ฐ is_admin ๊ฐ’ ๋ถ€์—ฌ(๊ด€๋ฆฌ์ž)
    = ์ƒ์„ฑ ์‹œ string ๊ฐ’์€ boolean์œผ๋กœ ๋ณ€๊ฒฝ ํ›„ ์ƒ์„ฑํ•œ๋‹ค.
    is_admin ๊ฐ’์œผ๋กœ ๊ตฌ๋ถ„ํ•  ๊ฒƒ์ด๋ฉฐ, test@test.com id๋Š” admin์œผ๋กœ ๊ถŒํ•œ ๊ฐ’์ด ์ฃผ์–ด์ง„ ๊ฒƒ์ด๋‹ค.

  1. is_admin ์œผ๋กœ ํŒ๋‹จํ•  ํ•จ์ˆ˜ ์ƒ์„ฑ(auth.py)
    = ์šฐ์„  ํŒ๋งค์ž์™€ ๊ตฌ๋งค์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋กœ๊ทธ์ธ ๋œ ์ƒํƒœ์—ฌ์•ผ ํ•˜๋ฏ€๋กœ check_login ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.
    ๋งŒ์•ฝ, user๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด false ๊ฐ’์„ return ์‹œ์ผœ์ค€๋‹ค.

    ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ is_admin์˜ ๊ฐ’์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ๊ทธ ๊ฐ’์„ return ์‹œ์ผœ์ค€๋‹ค. ( boolean or false )

    get ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ is_admin์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์˜ค๋ฅ˜๋ฅผ ํ‘œ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, false ๊ฐ’์„ return ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์ค€๋‹ค.


  1. is_admin import ๋ฐ ์‚ฌ์šฉ
    = is_admin์ด ์•„๋‹๊ฒฝ์šฐ, ์ƒํ’ˆ list page๋กœ redirect ์‹œ์ผœ์ค€๋‹ค.

    ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ๊ณผ๋ผ๋ฉด, test@test.com(๊ด€๋ฆฌ์ž๊ณ„์ •) ์ผ ๊ฒฝ์šฐ์—๋Š” ์ƒํ’ˆ ๋“ฑ๋ก ํŽ˜์ด์ง€๊ฐ€ ์ ‘์† ๋  ๊ฒƒ์ด๊ณ , ๋น„๋กœ๊ทธ์ธ ๋ฐ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์˜ ๊ณ„์ •์ผ ๊ฒฝ์šฐ์—๋Š” list page๋กœ ๊ณ„์† redirect ๋˜์–ด ์ ‘์†์ด ๋ถˆ๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค.

    ํ•˜์ง€๋งŒ, ์ ‘์†์ด ๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š”, ์ฐจ๋ผ๋ฆฌ ๋“ฑ๋ก ๋ฒ„ํŠผ์ด ๋ณด์ด์ง€ ์•Š๋Š” ํŽธ์ด ๋” ๋‚˜์„ ๊ฒƒ ๊ฐ™์•„ ์ˆจ๊ธฐ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ(๊ด€๋ฆฌ์ž๋งŒ ๋ณด์—ฌ์ง€๊ฒŒ) ๊ณ ๋ฏผ ํ›„ ์ž‘์—…ํ•ด ๋ณด์•˜๋‹ค.


  1. ๋กœ๊ทธ์ธ ์‹œ ์„ธ์…˜์ •๋ณด ์ถ”๊ฐ€ ๋ฐ import(controllers > user.py)
    = user๊ฐ€ is_admin์ผ ๊ฒฝ์šฐ true๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

๐Ÿ”– ๋กœ๊ทธ์•„์›ƒ์˜ ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค.
= is_admin์˜ ์ •๋ณด๋ฅผ ๋‚ ๋ ค์ค€๋‹ค(false).


  1. is_admin session ๊ฐ’ ๊ตฌ๋ถ„

๋น„๋กœ๊ทธ์ธ, ์ผ๋ฐ˜ ๊ตฌ๋งค์ž ๊ณ„์ •์œผ๋กœ ์ ‘์† ์‹œ์—๋Š” ์ƒํ’ˆ๋“ฑ๋ก ๋ฉ”๋‰ด ์ž์ฒด๊ฐ€ ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋˜๋ฉฐ, url ๋กœ ์ ‘์†์‹œ์—๋„ ๋ง‰์•„๋‘์—ˆ์œผ๋ฏ€๋กœ ์ƒ๊ด€์ด ์—†๋‹ค.

๊ด€๋ฆฌ์ž์˜ ๊ฒฝ์šฐ์—๋งŒ ์ •์ƒ์ ์œผ๋กœ ์ ‘์†์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ˜„์žฌ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด ๊ถŒํ•œ๊ตฌ๋ถ„์„ ์ œ๋Œ€๋กœ ์ •๋ฆฌํ•˜์ง€ ๋ชปํ–ˆ๋Š”๋ฐ, ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ์ ์šฉ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋“ค์˜ ๊ถŒํ•œ์„ ์ ์šฉ์‹œ์ผœ๋ณด๊ฒ ๋‹ค.

profile
๐Ÿฑโ€๐Ÿ Front End Developer

0๊ฐœ์˜ ๋Œ“๊ธ€