19:10 auth()-user() Object - use $request->user() as it's already injected to controller methods - using auth()->user() three times means instantiating Auth three times. Using variable makes more sense here.
also that variable is just a ref to a User Object, so calling 3 times auth()->user() jus increases call stack and returning the same object 3 times :/ Additional var will be just a link in memory :)
@@martomystery as far as I know - $request->user() just returns User ref that was injected by constructor while building request object. auth()->user() is always calling Gate - resolving user. But I can be wrong, and $request->user() does the same :D
Too bad the application isn’t translated, that’s the minimum I would have done before asking someone to review something on RU-vid. Thanks again for sharing your content Povilas!
@@alila3883 Nice 👍 One small thing though: the text “English” in your dropdown shouldn’t be translated since non-Arabic readers won’t find the button otherwise 😂
As always thank you for the video. Two things I have to mention. First one will be small information. 1. Its an arabic website (because you said that you don't know the language). 2. Using of a variable instead of calling same function repeatedly in many places. You refactored the code $user = auth()->user(); to just auth()->user() in 3 places. So if the developer want some other functions in the future he have to change that function in all the 3 places. In this kind of situation, I will do like the developer did. So I have update the function in only one place. I will go with your suggestion if I have to call the auth()->user() in only one place/code block. Just sharing the thoughts.
I think updatePassword method can be more refactored in the last part of video by creating a new rule for password comparing and moving the code to the new validation rule...
There are many tutorials that explain how to use Laravel and Vue/React in the same project with Passport/Sanctum. Does anyone know a good tutorial where the Api and front end(framework) are divided? preferably a tutorial with Laravel 8 - passport authentication and as front end Vue/React. Thx!
I'm currently in development of VUE SPA + LARAVEL API - two separate projects (frontend on port 80 and backend on port 8000) - what are the downsides and upsides vs a single project? Do you still provide auth bearer?
what do you guys think about the response layer to be added to this? in controller to massage the data you want but at the and you return new UserShowResponse($user) for example, and in it you put the things you think "i need this in controller but i dont want it to have this junk" like... idk format_number(), $user->map(), $user->avatar->getFullUrl() or similar.... at the end controller is much cleaner but there are a lot of response classes
Practice, practice, practice. Take projects and learn by practice. Best place to learn is Laracasts, and the official documentation. Also, you may take my courses: laraveldaily.teachable.com
Api Resources controller are important for apis are we just returned json data in api. In simple way without creating api resources controller. I hope my today question is relevant to video.
Hey Povilas, your content is always amazing. Just a request for a video, if you haven't done it before and if it's possible. Is it possible to make a video on how to fetch Livewire data like Vue.js with lazy loading, For instance in Vue, you can see the HTML elements first and then the data can be hydrated in these respective components as required. In Livewire this is a bit tedious I guess, is there any straightforward way to do lazy loading in Livewire?
I haven't seen anything exactly like that in Livewire, to be honest. But, there's a wire:loading where you can show another div while data is loading. It kinda achieves the same experience?
I believe what you are looking for is Livewire Defer Loading (Cant post links as youtube just deleted another commend I posted here, so google it). There is a official documentation about it.
Thanks a lot for the reply Povilas and Lucas. Actually wire:loading is more of when you the component is already rendered and actions there after can me done with wire:loading. Thanks Lucas, I can understand, RU-vid does that sometimes. I will have a look into it. One work around I tried was something like this. in User.php (component.php) public function mount($ids){ $this->ids = $ids; } public function fetchUsers(){ $this->users = User::whereIn('id', $this->ids)->get(); } public function render(){ return view('user.blade.php') } in user.blade.php (component.blade.php) window.addEventListener('DOMContentLoaded', ()=>{ @this.fetchUsers() } )
It's a personal preference and habit. JWT sounds to me like "the old way" of doing things, which existed before both Passport/Sanctum. So if it works for you, it's cool, but for those who started with Sanctum, I guess they stay with Sanctum. Same as Passport.
JWT is actually a token format (an open standard). Passport and Sanctum could have used JWT tokens instead of simple tokens. Some implementations of Oaut 2.0 will actually use JWT as a bearer token. JWT is usefull when you don't want to record a token in the database. Imagine a Laravel backend for a mobile app. If the app gets really popular you could end up with millions of tokens in the database. Searching and maintaining those tokens can be a lot of work. So, instead of attaching token to a user and saving it in DB, you record user's info (usually user id) in the token and send it back to your mobile app. When app uses this token to authenticate, your backend will decrypt it, make sure it is not expired and will find a user in DB from the user id passed in the token.