Slide 1

Slide 1 text

͜ΕͰ؆୯ʂ LaravelͷೝূॲཧΛΧελϚ Πζ 2018/03/15 LaraLab vol.2

Slide 2

Slide 2 text

ࣗݾ঺հ • ͸͡Ί·ͯ͠ • ෱ాେཌྷʢ;͍͚ͩͩ͘͢ʣ • @moyashidaisuke • ίϩϓϥ -> ΈΜΕͼ • αʔόαΠυΑΓͰ͕͢ϑϩϯτ΋ ΍Γ·͢ɻ • ڈ೥·Ͱ͸Ֆค঱͡Όͳ͔ͬͨ

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

https://www.yoriso.com/ 3/1 ϦϦʔεʂ ஫໨

Slide 5

Slide 5 text

ߏ੒

Slide 6

Slide 6 text

γϯϓϧͳ͓૴ࣜ ΑΓͦ͏ ͓๥͞Μศ "1* "1*Ͱ΍Γ ͱΓ 6TFS ৘ใ

Slide 7

Slide 7 text

γϯϓϧͳ͓૴ࣜ ΑΓͦ͏ ͓๥͞Μศ "1* "1*Ͱ΍Γ ͱΓ 6TFS ৘ใ

Slide 8

Slide 8 text

؀ڥ΋Ζ΋Ζ • Laravel5.5 • AWS

Slide 9

Slide 9 text

Laravelͷೝূػߏ

Slide 10

Slide 10 text

֓ཁ • https://readouble.com/laravel/5.5/ja/ authentication.html • ಈ͔͚ͩ͢ͳΒඪ४Ͱ͍ͭͯΔ • Eloquent࢖ͬͯΔͳΒɺσϑΥϧτͷΛվ଄ ͢Ε͹͍͚ͦ͏ʢະݕূʣ • ࠓճ͸ͦ΋ͦ΋DB࢖Θͳ͍ʢAPI͔Βऔಘʣ

Slide 11

Slide 11 text

؆୯ʁ

Slide 12

Slide 12 text

͋·Γ؆୯͡Όͳ͔ͬͨ

Slide 13

Slide 13 text

ཁҼ • υΩϡϝϯτ͕͏͍͢ • ݁ہίʔυΑ·ͳ͍ͱͦ΋ͦ΋ͷ࢓૊Έ͕Θ ͔Βͳ͍

Slide 14

Slide 14 text

ղઆ

Slide 15

Slide 15 text

ઃఆपΓ • ϚχϡΞϧ௨Γ • LTͳͷͰলུ

Slide 16

Slide 16 text

ೝূຊମ

Slide 17

Slide 17 text

ೝূຊମ

Slide 18

Slide 18 text

͜ͷ5ͭͷfunctionΛ࣮૷͠ ͍ͯ͘

Slide 19

Slide 19 text

ղઆ

Slide 20

Slide 20 text

Θ͔Βͳ͍ɺɺɺ

Slide 21

Slide 21 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ EloquentUserProvider

Slide 22

Slide 22 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ retrieveById /** * Retrieve a user by their unique identifier. * * @param mixed $identifier * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function retrieveById($identifier) { $model = $this->createModel(); return $model->newQuery() ->where($model->getAuthIdentifierName(), $identifier) ->first(); } JEFOUJpFSʢJEతͳʣΛड͚ औͬͯ.PEFMΛฦ͢

Slide 23

Slide 23 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ retrieveByToken /** * Retrieve a user by their unique identifier and "remember me" token. * * @param mixed $identifier * @param string $token * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function retrieveByToken($identifier, $token) { $model = $this->createModel(); $model = $model->where($model->getAuthIdentifierName(), $identifier)->first(); if (! $model) { return null; } $rememberToken = $model->getRememberToken(); return $rememberToken && hash_equals($rememberToken, $token) ? $model : null; } JEΛݩʹऔಘͯ͠UPLFOͱɺ Ҿ਺ͷUPLFOΛൺֱͯ͠ɺ Ұகͯͨ͠Β.PEFMΛฦ͢

Slide 24

Slide 24 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ updateRememberToken /** * Update the "remember me" token for the given user in storage. * * @param \Illuminate\Contracts\Auth\Authenticatable $user * @param string $token * @return void */ public function updateRememberToken(UserContract $user, $token) { $user->setRememberToken($token); $timestamps = $user->timestamps; $user->timestamps = false; $user->save(); $user->timestamps = $timestamps; } UPLFOΛड͚औͬͯߋ৽͢ Δ

Slide 25

Slide 25 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ retrieveByCredentials /** * Retrieve a user by the given credentials. * * @param array $credentials * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function retrieveByCredentials(array $credentials) { if (empty($credentials) || (count($credentials) === 1 && array_key_exists('password', $credentials))) { return; } // First we will add each credential element to the query as a where clause. // Then we can execute the query and, if we found a user, return it in a // Eloquent User "model" that will be utilized by the Guard instances. $query = $this->createModel()->newQuery(); foreach ($credentials as $key => $value) { if (! Str::contains($key, 'password')) { $query->where($key, $value); } } return $query->first(); } ͍ΘΏΔύεϫʔυೝূ͠ ͯ.PEFMΛฦ͢

Slide 26

Slide 26 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ validateCredentials /** * Validate a user against the given credentials. * * @param \Illuminate\Contracts\Auth\Authenticatable $user * @param array $credentials * @return bool */ public function validateCredentials(UserContract $user, array $credentials) { $plain = $credentials['password']; return $this->hasher->check($plain, $user->getAuthPassword()); } .PEFMͷύεϫʔυͱҾ਺ ͷύεϫʔυΛνΣοΫ

Slide 27

Slide 27 text

͜ΕͰ࣮૷Ͱ͖·͢Ͷʁ

Slide 28

Slide 28 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ retrieveById /** * {@inheritdoc} */ public function retrieveById($identifier) { return $this->repository->getUser($identifier); } JEFOUJpFSʢJEతͳʣΛड͚औͬͯ.PEFMΛ ฦ͢ʢ"1*ܦ༝ʣ

Slide 29

Slide 29 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ retrieveByToken /** * {@inheritdoc} */ public function retrieveByToken($identifier, $token) { return $this->repository->getUser($identifier, $token); } JEΛݩʹऔಘͯ͠UPLFOͱɺҾ਺ͷUPLFOΛൺ ֱͯ͠ɺҰகͯͨ͠Β.PEFMΛฦ͢ ʢ"1*ܦ༝ʣ

Slide 30

Slide 30 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ updateRememberToken /** * Update the "remember me" token for the given user in storage. * * @param \Illuminate\Contracts\Auth\Authenticatable $user * @param string $token * @return void */ public function updateRememberToken(UserContract $user, $token) { $user->setRememberToken($token); } ࠓճ͸5PLFOΛӬଓԽ͠ͳ ͍ʢSFNFNCFSNF͠ͳ ͍ʣ࢓༷ͳͷͰಛʹແ͠

Slide 31

Slide 31 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ retrieveByCredentials /** * ೝূॲཧ * SessionGuard.attempt͔Βݺ͹ΕΔ * {@inheritdoc} */ public function retrieveByCredentials(array $credentials) { return $this->userService->auth($credentials); } ͍ΘΏΔύεϫʔυೝূͯ͠.PEFMΛฦ͢ ʢ"1*ܦ༝ʣ ࠓճ͸ࣄલʹൃߦ͞Εͨ0OFUJNFͰೝূ

Slide 32

Slide 32 text

σϑΥϧτͷ࣮૷ΛݟΑ͏ validateCredentials /** * ೝূॲཧ * SessionGuard.attempt͔Βݺ͹ΕΔ * retrieveByCredentialsͷޙʹݺ͹ΕΔ * ύεϫʔυೝূ͠ͳ͍ͷͰԿ΋͠ͳ͍ * {@inheritdoc} */ public function validateCredentials(Authenticatable $user, array $credentials): bool { return true; } .PEFMͷύεϫʔυͱҾ਺ͷύε ϫʔυΛνΣοΫ ࠓճ͸ύεϫʔυͳ͍ͷͰෆཁ

Slide 33

Slide 33 text

ޙ͸APIଆͰྑ͍ײ͡ʹ࡞Ε ͹OKʂ

Slide 34

Slide 34 text

؆୯ʂ

Slide 35

Slide 35 text

·ͱΊ

Slide 36

Slide 36 text

·ͱΊ • ϚχϡΞϧ͕Θ͔Γʹ͍͘ • ࣮૷తʹ΋ඪ४Ͱఏڙ͞Ε͍ͯΔ΋ͷ͕ີ݁ ߹ʹͳ͍ͬͯͯಡΈղ͘ͷʹ͕͔͔࣌ؒΔ • ࢓૊Έ͕Θ͚Ε͹ͦΜͳʹෳࡶ͡Όͳ͍

Slide 37

Slide 37 text

QA