Navigated to Laracon, controller middleware, and permissions - Transcript

Laracon, controller middleware, and permissions

Episode Transcript

1 00:00:00,340 --> 00:00:03,279 -Hey, this is Michael Dyrynda. -And this is Jake Bennett. 2 00:00:05,900 --> 00:00:09,659 And welcome to Episode 179 of the North Meet South Web Podcast. 3 00:00:11,059 --> 00:00:13,020 I thought it was 180. 179, huh? 4 00:00:14,739 --> 00:00:15,159 Yeah. 5 00:00:16,479 --> 00:00:19,239 -179, okay. Well, hey- -Next- next- next week, we'll get to 180. 6 00:00:19,239 --> 00:00:21,539 179 it is, folks. Um, 7 00:00:22,459 --> 00:00:27,280 it is post July 4th, and I'm still sort of hanging on to the mustache thing here- 8 00:00:27,280 --> 00:00:28,039 -It's fine -... a little bit. 9 00:00:28,039 --> 00:00:29,979 I can- I can... Look, the goatie, th- 10 00:00:31,279 --> 00:00:32,959 -the dirty goatie I can live with. -It- it's okay. 11 00:00:32,959 --> 00:00:33,899 The mustache... 12 00:00:34,819 --> 00:00:36,479 -I'm gonna shave it all off for- for- -Maybe, maybe 13 00:00:36,479 --> 00:00:39,380 ... Laracon again. And now you're just gonna have to live with, uh, Jake with the 14 00:00:39,380 --> 00:00:39,959 mustache. 15 00:00:40,840 --> 00:00:44,040 Um, no, I'm not actually not gonna do that. I'm gonna- I'm gonna- I'm gonna just 16 00:00:44,040 --> 00:00:48,239 put it all back to how it- how it should normally be. Um, but in other news- 17 00:00:48,239 --> 00:00:50,739 -I was just- -We- we are actually staying at the same 18 00:00:50,739 --> 00:00:51,200 hotel. 19 00:00:52,479 --> 00:00:54,099 -I'm pretty stoked. -Yes, finally. 20 00:00:54,099 --> 00:00:56,099 -Finally, yes. -That- that worked out well in the end. 21 00:00:56,099 --> 00:00:58,419 -It did end up working out well. -Worked out well in the end because 22 00:00:59,099 --> 00:01:02,439 I said back in February, like, "I've bo- bought my ticket, I've booked my 23 00:01:02,439 --> 00:01:03,340 -accommodation-" -Yep, yep. 24 00:01:03,340 --> 00:01:07,579 "... this is the closest hotel." And it ended up- ended up- ended up being one of 25 00:01:07,579 --> 00:01:08,540 -the- -Yeah, the conference, yeah 26 00:01:08,540 --> 00:01:10,440 ... the official, I guess, conference hotels. 27 00:01:11,060 --> 00:01:13,599 And so by the time you booked, three weeks before the event- 28 00:01:13,599 --> 00:01:13,879 Yeah. 29 00:01:15,080 --> 00:01:17,719 -You're like, "There's no rooms anywhere." -Yeah, you were like, oh- 30 00:01:17,719 --> 00:01:20,619 -I wonder why, you know? -Right, yeah. And so they ended up opening 31 00:01:20,619 --> 00:01:22,480 -up, and, uh, yep. -1,200 people- 32 00:01:22,480 --> 00:01:24,079 -So- -1,200 people coming in. Yeah, so that 33 00:01:24,079 --> 00:01:28,179 -worked out. -It's gonna be awesome. I'm so excited. We 34 00:01:28,179 --> 00:01:31,019 can do, like, pillow fights middle of the night, just like- 35 00:01:31,019 --> 00:01:31,760 -Pillow fights. -Yep. 36 00:01:31,760 --> 00:01:33,839 -Yeah, yep. -Just gonna find out whose room is it. We 37 00:01:33,839 --> 00:01:37,199 gotta have- have so many people there. Knock on the doors and just hit people 38 00:01:37,199 --> 00:01:40,539 -with pillows. It's gonna be good times. -It's gonna be a bit like that. It's, um... 39 00:01:40,539 --> 00:01:45,199 Yeah, I looked, 'cause I, um, I messaged Matt, Matt Stouffer, and I said, "What are 40 00:01:45,199 --> 00:01:49,279 we doing for coffee?" Because I know it's only three days, but I can't drink 41 00:01:49,279 --> 00:01:50,439 -Starbucks for three days. -Yep. 42 00:01:50,439 --> 00:01:51,799 -Like, that's not an option. -Yep, yep. 43 00:01:51,799 --> 00:01:57,659 I need good coffee. It turns out... Now, whether or not it is good is to be seen, 44 00:01:57,659 --> 00:02:02,639 but it turns out that in that hotel, in the Vib by Best Western, for those of you 45 00:02:02,639 --> 00:02:05,839 who are staying there, there is a coffee, there's, like, a cafe- 46 00:02:05,839 --> 00:02:07,099 -Nice. Okay, okay -... downstairs in the hotel. 47 00:02:08,419 --> 00:02:13,159 So it- it has, like, a four-and-a-half star rating, so I'm hoping- 48 00:02:13,159 --> 00:02:15,059 -Sweet -... that that's good enough. 49 00:02:15,059 --> 00:02:17,659 -That'll be good. -There is also, for those of you staying 50 00:02:17,659 --> 00:02:21,959 there, a taqueria downstairs. So tacos and coffee, we should be sorted. 51 00:02:21,959 --> 00:02:25,499 Sounds amazing. Yeah, I'm- I'm really excited. It looks like a really nice hotel 52 00:02:25,499 --> 00:02:27,559 -as well. Um, like you said- -Mm-hmm 53 00:02:27,559 --> 00:02:30,779 ... it's like, I think the closest hotel to the venue of the ones that there are 54 00:02:30,779 --> 00:02:31,319 -on- -Yeah 55 00:02:31,319 --> 00:02:32,679 -... that are on there. So, um- -Mm-hmm 56 00:02:32,679 --> 00:02:36,499 ... yeah, it's- it's gonna be amazing. I'm so excited. I cannot wait. I'm flying in 57 00:02:36,499 --> 00:02:42,679 Monday, leaving Thursday evening. So if any of you have no plans for Thursday, 58 00:02:42,679 --> 00:02:46,099 meaning you've stayed Wednesday, you did the afterparty on Wednesday, you slept in 59 00:02:46,099 --> 00:02:49,239 on Thursday, and now it's Thursday afternoon and you're looking for something 60 00:02:49,239 --> 00:02:53,999 to do, hit me up on Telegram. I'd love to hang out because Michael will probably be 61 00:02:53,999 --> 00:02:56,079 gone by then. Michael, will you be out by then? 62 00:02:56,079 --> 00:02:57,519 -Yeah. -Yeah, so I'll be leaving at 5:30- 63 00:02:57,519 --> 00:02:59,379 -Yeah, we- we get in at, like, 3:00 -... which means I'll have a bit of time 64 00:02:59,379 --> 00:02:59,919 -for lunch. -Yeah. 65 00:02:59,919 --> 00:03:02,219 I'll be able to... I'll be free for lunch if anybody wants to hang out. 66 00:03:03,679 --> 00:03:06,759 -Yeah, we get in at 3:00-ish on- -Monday, yep 67 00:03:06,759 --> 00:03:10,919 ... Monday, Aaron and I. And then, we were supposed to leave at 6:00 or something 68 00:03:10,919 --> 00:03:14,019 -like that, 6:00 PM on Thursday. -Yeah. 69 00:03:14,019 --> 00:03:17,179 But our flight got pulled back to 11:00 AM. 70 00:03:17,179 --> 00:03:18,579 -Ah. -So we're probably gonna be at the airport 71 00:03:18,579 --> 00:03:20,799 at, like, I don't know, 8:00, just to be safe. 72 00:03:20,799 --> 00:03:21,619 -Yeah. -Just who knows? 73 00:03:21,619 --> 00:03:22,919 Yeah, we can catch coffee. You and I can catch coffee. 74 00:03:22,919 --> 00:03:26,459 Although I saw recently... Yeah, yeah, we'll be all right. We'll- the- we'll have 75 00:03:26,459 --> 00:03:29,839 plenty of opportunities to- to see each other over the- the three days- 76 00:03:29,839 --> 00:03:30,799 -For sure -... that- that we're there, but 77 00:03:31,439 --> 00:03:36,019 yeah, I am... I saw- I saw on the news or something, there was an article the other 78 00:03:36,019 --> 00:03:39,839 day that, like, tourism is way down for Australians into 79 00:03:40,679 --> 00:03:43,839 -the US at the moment, like 12 or 15%- -Wow, that's crazy 80 00:03:43,839 --> 00:03:45,439 -... on what they were expecting normally. -Yeah. 81 00:03:46,079 --> 00:03:51,459 So I'm- I'm hoping that we have, like, a lo- although these- these flights that we 82 00:03:51,459 --> 00:03:55,419 bought were on sale, so they're sale dates, so I suspect that maybe they will 83 00:03:55,419 --> 00:03:59,119 be booked-booked. But it'd be nice to see if there's a bit of, uh, 84 00:03:59,819 --> 00:04:03,119 -bit of space on the plane actually. -Some extra legroom. Yeah, for sure. 85 00:04:03,119 --> 00:04:03,839 -Yeah. -I actually- 86 00:04:03,839 --> 00:04:05,479 -We'll see what happens -... there was a lady sitting in my seat on 87 00:04:05,479 --> 00:04:06,659 the last flight I was on. 88 00:04:07,659 --> 00:04:10,359 And I didn't bother her 'cause, like, it doesn't matter, there's extra seats. And 89 00:04:10,359 --> 00:04:13,079 so I told the attendant, I was like, "Do you mind if I sit in another seat?" And 90 00:04:13,079 --> 00:04:15,659 she's like, "Yeah, that's fine." I said, "Why- why don't I just go sit in first 91 00:04:15,659 --> 00:04:18,559 class, it's like it's enough, should I sit up there?" She was like, "It's fine with 92 00:04:18,559 --> 00:04:21,999 me." She's like, "But let me check." And so she checked and the lady up front was 93 00:04:21,999 --> 00:04:25,039 like, "No". I was like, "Come on", so I just took an exit seat. It was fine. 94 00:04:25,039 --> 00:04:27,479 -Ah, you tried. -I did try. She was almost, I mean, almost 95 00:04:27,479 --> 00:04:28,179 -had her. -You tried. 96 00:04:28,179 --> 00:04:31,119 -Yep. I was almost there. -Almost. Almost there. Almost got it. Yeah, 97 00:04:31,119 --> 00:04:36,199 we- we definitely for the long haul flights, the, uh, Sydney to Dallas and 98 00:04:36,199 --> 00:04:39,079 then the LA to Melbourne on the way back, we- 99 00:04:40,119 --> 00:04:42,379 -we went for exit seats. -Nice, there you go. 100 00:04:42,379 --> 00:04:44,199 -Aaron and I just- -Yeah, some extra room. 101 00:04:44,199 --> 00:04:48,539 Um, and hopefully these are good exit seats because the last time I was coming 102 00:04:48,539 --> 00:04:49,839 back from the US, I went 103 00:04:50,679 --> 00:04:54,499 thinking that it'd be good to sit in the, like, the- the bulkhead row- 104 00:04:54,499 --> 00:04:56,199 -Yeah -... behind the- the bathrooms. 105 00:04:56,199 --> 00:04:58,939 -Yeah. -Terrible idea. Don't ever do that. Because 106 00:04:58,939 --> 00:05:00,399 -number one, the armrests- -Oh, no. 107 00:05:00,399 --> 00:05:04,379 Like, the armrests are fixed, so you can't move them. So I had, like... I was 108 00:05:04,379 --> 00:05:08,459 uncomfortable the whole time. And you think because you're at the bulkhead, 109 00:05:08,459 --> 00:05:11,679 there's a bit more room, and there is physically a bit more room to stretch your 110 00:05:11,679 --> 00:05:14,739 legs out. But the problem is people walk past there to go- 111 00:05:14,739 --> 00:05:16,799 -Oh, God. -... to the bathroom from the bathroom. So 112 00:05:17,799 --> 00:05:20,579 yeah, no good. So we are on the... We're by the galley, 113 00:05:21,399 --> 00:05:26,239 um, on the exit- exit row this time, and to, like, the- the- the left of the plane. 114 00:05:26,239 --> 00:05:31,279 So hopefully that'll be a better seat. But I didn't... I looked at even premium 115 00:05:31,279 --> 00:05:34,619 c- premium economy was like $6,000 return or something like that. 116 00:05:34,619 --> 00:05:35,819 -My gosh. -I said, "Nah. Not." 117 00:05:35,819 --> 00:05:37,799 -Hey, okay, I've got one- -No thank you, not for me 118 00:05:37,799 --> 00:05:38,899 ... one quick tip for you here 119 00:05:39,759 --> 00:05:41,019 -for sleeping on planes. -Mm-hmm. 120 00:05:41,019 --> 00:05:41,299 Okay? 121 00:05:41,959 --> 00:05:46,099 There is this amazing product called the Sleeper Hold. 122 00:05:46,939 --> 00:05:48,479 -Sleeper Hold. Is- -Right. 123 00:05:48,479 --> 00:05:51,319 -No, seriously. It was invented by an- -Nonsense 124 00:05:51,319 --> 00:05:54,119 -... an MMA guy, a UFC fighter- -Mm-hmm 125 00:05:54,119 --> 00:05:57,359 ... who had to go on flights and trips and stuff like that all the time. And he was, 126 00:05:57,359 --> 00:06:00,739 like, sick of, like, not being able to sleep well on these- on these trips. 127 00:06:00,739 --> 00:06:02,359 -Mm-hmm. -So he invented this thing called the 128 00:06:02,359 --> 00:06:04,639 Sleeper Hold. Now, I got one at a conference. I was like, "What is this 129 00:06:04,639 --> 00:06:11,619 nonsense?"Oh, my gosh. I will never travel without it again. It is amazing, and you 130 00:06:11,619 --> 00:06:15,459 can actually sleep well on flights or on buses or on- 131 00:06:15,459 --> 00:06:17,040 -Right -... on anything like that- ... that has, 132 00:06:17,040 --> 00:06:18,679 like a rest... Like, a seat behind you. 133 00:06:19,319 --> 00:06:22,819 It is incredible. So if you... I mean, because you're gonna be on these insane 134 00:06:22,819 --> 00:06:26,359 flights, you know, you're gonna be hitting 14 and a half hour time difference jet 135 00:06:26,359 --> 00:06:26,919 lag thing, 136 00:06:27,519 --> 00:06:31,559 I would suggest snapping one of these up. Now, they're not inexpensive, but they are 137 00:06:31,559 --> 00:06:35,740 amazing, amazing. And so, um, check it out. Sleeper- 138 00:06:35,740 --> 00:06:36,500 Oh, the travel pillow. Right, right, right, right. 139 00:06:36,500 --> 00:06:37,520 Sleeper Hold. Yeah, yeah. It's a s- it's a no- 140 00:06:37,520 --> 00:06:40,760 -When you say sleeper hold- -And I know, and I know, it's- it's not, 141 00:06:40,760 --> 00:06:42,740 -you know, it's not just a travel pillow. -Yeah. 142 00:06:42,740 --> 00:06:44,159 -It's- it's- it's a little bit different. -Yeah, yeah, yeah. 143 00:06:44,159 --> 00:06:47,100 They've got some really good marketing as well, but I've actually used it and the 144 00:06:47,100 --> 00:06:50,219 marketing holds up. The hype holds up. It's really good. So for any of you 145 00:06:50,219 --> 00:06:53,839 listening who are gonna be going to Laracon, grab a Sleeper Hold. Tell them 146 00:06:53,839 --> 00:06:57,019 Jake sent you, there's no referral code or anything. Sorry, otherwise I would give 147 00:06:57,019 --> 00:07:00,319 it to you. But, uh, they're pretty sweet. Pretty sweet. So... 148 00:07:00,319 --> 00:07:04,099 Right. So this thing, you strap to the... You strap to the seat, and it kind of 149 00:07:04,099 --> 00:07:05,759 holds your head so your face doesn't flop forward. 150 00:07:05,759 --> 00:07:07,239 That's right. Yeah, so you have a little neck thing that- 151 00:07:07,239 --> 00:07:09,119 -Yeah, cool -... goes behind, just behind the- the, 152 00:07:09,119 --> 00:07:12,439 like, the little dip in your neck, in the back of your neck. You just put the pillow 153 00:07:12,439 --> 00:07:12,779 -there- -Mm-hmm 154 00:07:12,779 --> 00:07:15,659 ... and then there is a strap that goes around the back of the seat. And then 155 00:07:15,659 --> 00:07:19,839 there's like a eye mask that kind of goes over the front of your eyes and holds your 156 00:07:19,839 --> 00:07:23,419 head in place up against the back of the seat. And you don't, you know- 157 00:07:23,419 --> 00:07:24,599 -Yeah, right -... those neck cushions, they don't 158 00:07:24,599 --> 00:07:27,319 actually hold your head up, so you- you kind of, you have to try- 159 00:07:27,319 --> 00:07:28,679 -Yeah, yeah, yeah -... lean your head back. It doesn't work 160 00:07:28,679 --> 00:07:32,599 very well. This works amazingly, and I have slept like a baby on flights with 161 00:07:32,599 --> 00:07:36,879 -this thing. So, highly suggest it. -I'm, uh... I have sent this to my wife. 162 00:07:36,879 --> 00:07:41,999 -Mm-hmm. -I am very fortunate in that I, generally 163 00:07:41,999 --> 00:07:46,199 speaking, on a flight, will close my eyes and wake up eight or nine hours later. 164 00:07:46,199 --> 00:07:49,579 -That's amazing. -Especially on the way back. Especially on 165 00:07:49,579 --> 00:07:54,839 the way back, because it'll be, you know, three days of go, go, go. We've got the- 166 00:07:54,839 --> 00:07:57,179 the mostly technical party on Monday night. 167 00:07:57,179 --> 00:08:00,379 -Yep, Monday night. -We've got after dark on- on Tuesday night, 168 00:08:00,379 --> 00:08:03,359 then there's like... I assume we'll do something on- 169 00:08:03,359 --> 00:08:04,879 -Wednesday night, yeah. Did you- -... on Wednesday night as well, and then 170 00:08:04,879 --> 00:08:06,719 -we're gonna be up- -There's a link, I'll send it to you. 171 00:08:06,719 --> 00:08:10,159 -There's a Luma something. -Yeah, yeah, yeah. I- 172 00:08:10,159 --> 00:08:11,599 -You get that one? -Yes, that was for Tuesday night, I think, 173 00:08:11,599 --> 00:08:12,779 -that one. Yeah, I got that one s- -I think that was- 174 00:08:12,779 --> 00:08:13,779 -So, did that, um... -I thought that- I thought that was for 175 00:08:13,779 --> 00:08:14,239 Wednesday. 176 00:08:16,159 --> 00:08:16,639 Let me look. 177 00:08:17,839 --> 00:08:19,799 -Luma after party. -Can you double check? 178 00:08:19,799 --> 00:08:23,259 Yep, I'm looking right now. Tuesday. You're right, it is Tuesday. Yep. 179 00:08:23,259 --> 00:08:23,959 -Mm-hmm. -My bad. 180 00:08:23,959 --> 00:08:24,199 Yeah. 181 00:08:24,839 --> 00:08:29,199 Yeah, so, um, that, and then Wednesday night, I assume we'll do something. Go 182 00:08:29,199 --> 00:08:30,359 -grab dinner or something- -Yeah, yeah 183 00:08:30,359 --> 00:08:33,019 ... with the- with the guys. Anyone who's- who's keen for that. 184 00:08:33,019 --> 00:08:35,859 -For sure. -Um, and then Wednesday we'll be up early, 185 00:08:35,859 --> 00:08:40,659 and then we're just gonna have to try and power through LA. Um, Aaron and I are 186 00:08:40,659 --> 00:08:44,619 gonna go and do the unthinkable. And I don't know if we're actually gonna do 187 00:08:44,619 --> 00:08:48,979 this, but I- I joked to Aaron, I said, "So, outside of LAX, there's a Five Guys, 188 00:08:48,979 --> 00:08:51,879 -an In-N-Out, and a Chick-fil-A." -Gotta do it. 189 00:08:51,879 --> 00:08:53,479 And I'm like, "We'll just eat all of them. We'll just do all three." 190 00:08:53,479 --> 00:08:53,859 You gotta do it. 191 00:08:54,659 --> 00:08:56,339 And then, uh, yeah. So 192 00:08:57,039 --> 00:09:00,559 by the time I get on that plane, and- and this has happened every time I've left the 193 00:09:00,559 --> 00:09:06,619 US for- for any trip that I've been over there, I'm asleep before wheels up. Like, 194 00:09:06,619 --> 00:09:08,359 before we leave the ground- ... my eyes are shut. I'm out. 195 00:09:08,359 --> 00:09:08,519 Yeah. 196 00:09:09,399 --> 00:09:11,279 -Oh, my gosh. -And they come- they come at like an hour 197 00:09:11,279 --> 00:09:13,999 or- or- or two later, and they're like, "Do you want dinner?" I'm like, "It's 198 00:09:13,999 --> 00:09:15,759 midnight. I don't- I don't want dinner. Go away." 199 00:09:15,759 --> 00:09:16,999 -That's funny. -"Why did you wake me up for this?" So... 200 00:09:16,999 --> 00:09:20,259 -That's hilarious. -This light- this light keeps on flicking 201 00:09:20,259 --> 00:09:23,039 off and on for some reason, I don't know why. So every now and then I get shrouded 202 00:09:23,039 --> 00:09:23,659 in darkness. 203 00:09:24,899 --> 00:09:25,999 -Well- -So yeah, Laracon, uh, this- 204 00:09:25,999 --> 00:09:26,859 Anyway, long story short. Yeah, absolutely 205 00:09:26,859 --> 00:09:32,319 ... this will be our last- last North Meet South before Laracon. Uh, we've got... 206 00:09:32,319 --> 00:09:35,559 We'll do an episode of Laravel News next week. Mm-hmm. 207 00:09:35,559 --> 00:09:37,099 And then we'll be on location. 208 00:09:38,319 --> 00:09:43,179 Is it that quick? No. Oh, no. We will have one more North Meet South before Laracon. 209 00:09:43,179 --> 00:09:43,339 Okay. Okay. 210 00:09:43,339 --> 00:09:45,899 And then we'll be on location. Yep, yep, yep, yep, yep. 211 00:09:47,519 --> 00:09:51,659 So yeah. A- and then for Laravel News, you and I will be, 212 00:09:52,259 --> 00:09:54,999 uh, running around. You did a day one recap last year with- 213 00:09:54,999 --> 00:09:56,039 -Yes -... David Hemphill. 214 00:09:56,039 --> 00:09:59,019 -Yes. -Which made- made me feel very slighted, 215 00:09:59,019 --> 00:09:59,839 -uh, that you would- -I'm so sorry. 216 00:09:59,839 --> 00:10:01,579 ... you would do something like- like that . 217 00:10:01,579 --> 00:10:02,739 I think I mentioned you. I thought I mentioned you. 218 00:10:02,739 --> 00:10:03,879 -You did- you did mention me. -Okay. 219 00:10:03,879 --> 00:10:07,519 But, uh, you know, I will- I will- I'll be there this time, so you watch yourself. 220 00:10:07,519 --> 00:10:10,419 And so it will definitely be you and me. Yeah, Hemphill. Watch it, you're gonna 221 00:10:10,419 --> 00:10:12,059 -get- you're gonna get a- -So yeah, we'll do- 222 00:10:12,059 --> 00:10:13,999 -... shiv. -We'll do a recap day one and we'll do day 223 00:10:13,999 --> 00:10:15,399 two, 'cause there was no day two last year. 224 00:10:15,399 --> 00:10:17,959 -Right. -Um, and I think we're gonna go around and 225 00:10:17,959 --> 00:10:19,319 -do some like vox pops- -Absolutely 226 00:10:19,319 --> 00:10:23,199 ... and speak to people and- and talk to them as well for Laravel News, so that'll 227 00:10:23,199 --> 00:10:24,339 be a bit of fun. Something- something to do. 228 00:10:24,339 --> 00:10:26,979 -Should be a good time. -So if- if you are interested 229 00:10:27,599 --> 00:10:31,139 in doing that, keep an eye out for us. We'll- we'd love to talk to you about what 230 00:10:31,139 --> 00:10:34,299 you think. I saw Taylor's got like a two-hour 231 00:10:34,979 --> 00:10:36,759 -keynote at the end of day one. -Wow. 232 00:10:36,759 --> 00:10:39,999 So that'll be- that'll be a bit of fun. And looks like there's a lot of variety in 233 00:10:39,999 --> 00:10:42,959 the talks as well. If you've- if you've seen the schedule, there's some- there's 234 00:10:42,959 --> 00:10:47,339 some, um, you know, 30-minute talks, 20-minute talks. They're all over the 235 00:10:47,339 --> 00:10:51,059 place this year, which- which is good. I think- I think mixing things up like that 236 00:10:51,059 --> 00:10:57,019 is- is good for the audience as well. Um, getting a- a mix of lengths and types and- 237 00:10:57,019 --> 00:10:57,919 and all sorts. So 238 00:10:58,959 --> 00:11:00,399 -very excited to get back over there- -Yeah 239 00:11:00,399 --> 00:11:02,699 ... after, what, six years or whatever it's been. 240 00:11:02,699 --> 00:11:05,839 Yep. It's gonna be incredible to have you, dude. It's been too long. Too long since 241 00:11:05,839 --> 00:11:09,839 we've been able to hang out in- in, uh, the real, right? In 3D. 242 00:11:09,839 --> 00:11:12,919 -Mm-hmm. -So it'll be fun. It'll be lots of fun. Hey 243 00:11:12,919 --> 00:11:17,839 folks, we have a couple different topics that I would like to talk about today. The 244 00:11:17,839 --> 00:11:21,599 first one is this. Should you have 245 00:11:22,239 --> 00:11:27,979 a middleware call inside the constructor of a controller? Okay, so 246 00:11:28,999 --> 00:11:29,699 set it up for you. 247 00:11:30,439 --> 00:11:32,739 This is something that used to be supported and I do not think it's 248 00:11:32,739 --> 00:11:36,919 supported anymore in Laravel 12, which is this. Inside of a controller you can, in 249 00:11:36,919 --> 00:11:41,359 the constructor, say, "This middleware," and then specify a middleware. And what 250 00:11:41,359 --> 00:11:45,419 this will do is this will apply that middleware to anything that you're going 251 00:11:45,419 --> 00:11:47,659 to be accessing that controller 252 00:11:48,699 --> 00:11:52,899 through, right? Any route that references anything that points to that controller, 253 00:11:52,899 --> 00:11:56,639 you can have a middleware in the constructor of that controller. Okay. Are 254 00:11:56,639 --> 00:11:57,019 you ready? 255 00:11:57,639 --> 00:12:01,159 Think about it for a second. Make up your mind. Do you think you should put it there 256 00:12:01,159 --> 00:12:01,859 or not? 257 00:12:02,579 --> 00:12:03,059 And 258 00:12:03,899 --> 00:12:05,119 go. All right, what do you think, Michael? 259 00:12:06,859 --> 00:12:09,959 No. And you, you, you posted this the other day- 260 00:12:09,959 --> 00:12:11,979 -I did -... in Telegram, and I- 261 00:12:11,979 --> 00:12:15,119 I'm gonna grab a water while you formulate your response and, and tell me why I 262 00:12:15,119 --> 00:12:18,020 shouldn't do it, so then I can actually come back and tell you why I think you 263 00:12:18,020 --> 00:12:18,779 should. But go ahead. 264 00:12:19,680 --> 00:12:19,919 Yeah. 265 00:12:20,539 --> 00:12:24,339 I mean, Laravel 12, you said you can't do it, so that's, that's as good a reason as 266 00:12:24,339 --> 00:12:26,899 any to not do it. Um, I know 267 00:12:27,539 --> 00:12:32,600 there used to be some explicit reason to do it. Like, you... There was some part of 268 00:12:32,600 --> 00:12:36,939 the request lifecycle that wasn't available inside of 269 00:12:37,680 --> 00:12:40,799 your route definitions, which is why you, you maybe wouldn't have done it 270 00:12:40,799 --> 00:12:43,520 previously. Like, you wanted to dynamically apply a middleware or 271 00:12:43,520 --> 00:12:46,219 something like that inside of the controller constructor. 272 00:12:47,499 --> 00:12:48,860 The, the reason I don't 273 00:12:49,540 --> 00:12:53,359 like the idea of putting the middleware in the controller 274 00:12:53,979 --> 00:12:57,119 is kind of similar to why I don't like using, um, 275 00:12:57,739 --> 00:13:02,259 events too much. I don't particularly like using observers and, and global scopes, 276 00:13:02,259 --> 00:13:04,299 although those things are a little bit more 277 00:13:05,079 --> 00:13:06,619 -opaque now- -Yeah, for sure they are 278 00:13:06,619 --> 00:13:10,079 ... because we've got the attributes to say, like, observed by, scoped by, and all 279 00:13:10,079 --> 00:13:11,839 of that kind of stuff. But I feel like 280 00:13:14,040 --> 00:13:18,599 the routes file is the first place that I'm going to look in a new application to 281 00:13:18,599 --> 00:13:22,079 see everything that's happening across the application. Like, I know what 282 00:13:22,079 --> 00:13:26,300 functionality is available, I know where to reach it. It's a very quick and easy 283 00:13:26,300 --> 00:13:29,999 way. W- this is the same reason I don't like route definitions inside of 284 00:13:29,999 --> 00:13:32,499 controllers using attributes, which is a thing that has- 285 00:13:32,499 --> 00:13:34,139 -Fair enough -... like, come and gone in the past. 286 00:13:34,139 --> 00:13:38,639 Because if you want to s- I mean, you can always do a route list and see the route 287 00:13:38,639 --> 00:13:42,659 list that way, but I think opening up the routes file and just scrolling through it 288 00:13:42,659 --> 00:13:47,279 and seeing everything that's there is my preferred method for, for dealing with 289 00:13:47,279 --> 00:13:48,079 that kind of stuff. 290 00:13:48,959 --> 00:13:53,319 When you start putting things in- inside a constructor, it's, it becomes 291 00:13:54,079 --> 00:13:54,939 less visible. 292 00:13:55,560 --> 00:13:59,359 Um, it... Like, does it still appear in the route list if you d- define a 293 00:13:59,359 --> 00:14:01,019 -middleware there? -That's a good question. I honestly don't 294 00:14:01,019 --> 00:14:02,179 -know. -'Cause that would be my hesitation. 295 00:14:02,179 --> 00:14:04,479 -I'm not sure. -Yeah. 'Cause that would be, that would be 296 00:14:04,479 --> 00:14:07,079 -another hesitation of mine- -I kinda feel like it wouldn't 297 00:14:07,079 --> 00:14:09,819 -... is that you don't know. -I kinda feel like it would not. Yeah. 298 00:14:09,819 --> 00:14:10,099 Yeah. 299 00:14:11,539 --> 00:14:16,439 Um, so yeah, my, eh, I never, I never do. Um, 300 00:14:17,359 --> 00:14:21,339 all of my middlewares are defined inside of 301 00:14:21,959 --> 00:14:26,379 -the routes file. Yeah. -Fair enough. Now that being said, uh, I 302 00:14:26,379 --> 00:14:30,799 mean there are multiple other places where there are middlewares being placed onto 303 00:14:30,799 --> 00:14:35,619 things without your knowledge or just explicitly by the framework. So, 304 00:14:36,239 --> 00:14:37,699 you know, one of those places is in the 305 00:14:38,359 --> 00:14:41,899 bootstrap, uh, app.php file, where you're- 306 00:14:41,899 --> 00:14:43,079 -Mm-hmm -... setting up all your routes and all 307 00:14:43,079 --> 00:14:48,939 those things. And if you use a then, uh, portion of the section there when you're 308 00:14:48,939 --> 00:14:53,059 defining those different routes, then you can apply middlewares there and things 309 00:14:53,059 --> 00:14:56,579 like that. You know, you can set up a new stack essentially. You have web, you have 310 00:14:56,579 --> 00:15:00,379 API, you have console, which are all getting set up. You have up, which is also 311 00:15:00,379 --> 00:15:02,199 another one that ships by default with Laravel 11. 312 00:15:02,999 --> 00:15:05,999 But if you have a then, you know, you might do something like development 313 00:15:05,999 --> 00:15:08,559 routes. Like, if you're in development, you will, then you'd bind these 314 00:15:08,559 --> 00:15:13,419 development routes, and you could put, uh, prefixes or middlewares on it in there. 315 00:15:13,419 --> 00:15:17,039 Uh, there was previously in, you know, previous versions where you had a, a route 316 00:15:17,039 --> 00:15:22,039 service provider or something like that, or the HTTP kernel, you could do things in 317 00:15:22,039 --> 00:15:23,899 -there as well when you'd register those- -Mm-hmm 318 00:15:23,899 --> 00:15:27,919 ... or when you'd bind those sorts of things. And so, it's not like it's only 319 00:15:27,919 --> 00:15:32,039 ever been that the routes file is the only place where middlewares are applied. I 320 00:15:32,039 --> 00:15:33,199 -mean, there's a web- -Right. 321 00:15:33,199 --> 00:15:35,539 There's a web stack that's applied by default. 322 00:15:35,539 --> 00:15:36,119 -Yeah, yeah. -So 323 00:15:36,999 --> 00:15:40,259 I get the argument that, like, if you can just go see the web.php, you can see 324 00:15:40,259 --> 00:15:43,699 everything on there, but it's not actually true. Like, there's... That's all the 325 00:15:43,699 --> 00:15:44,059 -things- -Mm-hmm 326 00:15:44,059 --> 00:15:46,439 ... that you would put on there, but it's definitely not all- 327 00:15:46,439 --> 00:15:47,739 -Yeah -... the things that are on there. 328 00:15:47,739 --> 00:15:50,539 -Yeah. -So, um, I would say that, like, as far as 329 00:15:50,539 --> 00:15:54,919 the user definitions are defined, I agree that the web.php is where you would go see 330 00:15:54,919 --> 00:15:59,179 all the user-defined things most of the time. Um, you do have to be a little bit 331 00:15:59,179 --> 00:16:02,399 careful if you're migrating from legacy applications, and that's the situation 332 00:16:02,399 --> 00:16:05,099 here. That's why we ran into this, is we've... You know, we've been on this 333 00:16:05,099 --> 00:16:09,119 since Laravel 4, and so this very particular application has been upgraded 334 00:16:09,119 --> 00:16:12,499 to 4, 5, 6, 7, 8, 9, 10, 11, 12. And so, 12- 335 00:16:12,499 --> 00:16:13,219 -Yeah -... is when it sort of- 336 00:16:13,219 --> 00:16:14,619 -Yeah -... dropped support for it and caused some 337 00:16:14,619 --> 00:16:20,119 issues for us. The one thing I will say that is helpful, and maybe the reason why, 338 00:16:20,119 --> 00:16:24,359 um, what you were talking about, is like if you wanted to resolve something out of 339 00:16:24,359 --> 00:16:27,919 the constructor in order to be able to apply that to a middleware or s- pass that 340 00:16:27,919 --> 00:16:31,419 in as something to the middleware, it's possible that at one point that was not 341 00:16:31,419 --> 00:16:34,819 available. But obviously now you can make your own middleware classes and things 342 00:16:34,819 --> 00:16:36,759 like that, so it's not a problem. Um, 343 00:16:37,539 --> 00:16:37,799 but 344 00:16:38,759 --> 00:16:42,859 if there is a middleware that you want to apply to every single method inside of 345 00:16:42,859 --> 00:16:43,679 that controller, 346 00:16:45,079 --> 00:16:49,139 it is possible for someone to miss that when they're defining a new route for that 347 00:16:49,139 --> 00:16:53,559 controller, right? Maybe they don't look and see the other places. Maybe that 348 00:16:53,559 --> 00:16:58,639 control... Maybe the, the locations where, uh, those are defined are not co-located. 349 00:16:58,639 --> 00:17:01,299 Maybe they're just adding a new one to the bottom of the list and they don't go 350 00:17:01,299 --> 00:17:05,939 find it. That controller middleware, uh, is not gonna be applied now. And so, 351 00:17:06,679 --> 00:17:11,239 that could be problematic. Now, that's... Maybe there's ways around that. Maybe you 352 00:17:11,239 --> 00:17:14,999 can put an architecture test in place. But that was the particular argument that I 353 00:17:14,999 --> 00:17:18,799 had, which was like, it's not necessarily all bad to be able to define it in the 354 00:17:18,799 --> 00:17:21,879 controller. I can see the arguments for why you maybe wouldn't, 355 00:17:22,519 --> 00:17:24,059 -but I don't think it's- -Mm-hmm 356 00:17:24,059 --> 00:17:26,999 ... I don't think it's that bad. I don't know. I don't know. 357 00:17:26,999 --> 00:17:27,319 Yeah. 358 00:17:27,999 --> 00:17:33,359 I'm just trying to look back on when, when it was actually... 'Cause there's nothing 359 00:17:33,359 --> 00:17:35,879 in the Laravel 12 upgrade guide that I can see 360 00:17:36,539 --> 00:17:38,399 that's obvious that says this has been 361 00:17:39,079 --> 00:17:40,279 removed. So... 362 00:17:41,139 --> 00:17:43,199 -All I know is it was throwing an error. -Controller middleware. 363 00:17:43,199 --> 00:17:44,099 -Yeah. -Oh no, it's still here. 364 00:17:44,099 --> 00:17:46,339 -It was throwing an error. -Controller middleware. 365 00:17:46,339 --> 00:17:47,819 -Go ahead. Yeah, maybe just- -Ouch 366 00:17:47,819 --> 00:17:52,739 -... maybe the way that we defined it. -Oh, you put it... Yeah. So used to be in 367 00:17:52,739 --> 00:17:54,319 a, um, 368 00:17:55,579 --> 00:18:01,219 cons- in the construct method, and now you can define it as a stat- a public static 369 00:18:01,219 --> 00:18:04,119 method that returns an array inside the controller. 370 00:18:04,119 --> 00:18:04,559 I got it. 371 00:18:05,459 --> 00:18:07,779 -So it's still able to be used- -And you, and you implement the has 372 00:18:07,779 --> 00:18:09,339 -middleware -... just not in the same way. Oh, I see. I 373 00:18:09,339 --> 00:18:09,879 -see. -Mm-hmm. 374 00:18:09,879 --> 00:18:12,419 Yep. Just not in the same way. Okay. Fair enough. 375 00:18:13,371 --> 00:18:16,931 Fair enough. Middleware may be assigned to the controller's routes in your routes 376 00:18:16,931 --> 00:18:20,451 file. You may find it convenient to specify middleware within your controller 377 00:18:20,451 --> 00:18:24,552 class. To do so, your controller should implement the HasMiddleware interface, 378 00:18:24,552 --> 00:18:28,811 which dictates that the controller should have a static middleware method. From this 379 00:18:28,811 --> 00:18:31,811 method, you may return an array of middleware that should be applied to the 380 00:18:31,811 --> 00:18:37,071 controller's actions, and you may also define ControllerMiddleware as closures- 381 00:18:37,071 --> 00:18:38,971 -Hmm, interesting -... which provides a convenient way to 382 00:18:38,971 --> 00:18:43,231 define an inline middleware without writing an entire middleware class. But it 383 00:18:43,231 --> 00:18:43,671 doesn't, 384 00:18:45,252 --> 00:18:49,471 doesn't really say why or when you would do this- 385 00:18:49,471 --> 00:18:51,811 -Sharp knives -... which I guess is... You know, sharp 386 00:18:51,811 --> 00:18:53,132 knives, right? Laravel 387 00:18:53,851 --> 00:18:59,992 provides many ways to do the same thing. I would, I would posit that doing it inside 388 00:18:59,992 --> 00:19:02,771 of the controller is potentially a less, 389 00:19:04,211 --> 00:19:04,671 um, 390 00:19:05,551 --> 00:19:06,292 what's the word? 391 00:19:07,171 --> 00:19:08,571 Like, a less conventional way of doing it. 392 00:19:08,571 --> 00:19:11,191 -I agree. I do agree with that. -But, you know, it's documented. Um, 393 00:19:12,291 --> 00:19:13,611 yeah. I don- I mean, 394 00:19:14,331 --> 00:19:18,711 yeah, i- for... I wouldn't do it in the controller for the same reason that I 395 00:19:18,711 --> 00:19:19,032 wouldn't, 396 00:19:19,812 --> 00:19:23,751 that I don't subscribe to, to doing route definitions inside of the controller. 397 00:19:23,751 --> 00:19:25,011 -And that's fair. -Um... 398 00:19:25,011 --> 00:19:29,072 I, I do get that. Yeah, and, and so it sounds like it's not necessarily... Th- 399 00:19:29,072 --> 00:19:32,892 the method by which we were using it is deprecated, but the, the idea itself- 400 00:19:32,892 --> 00:19:34,951 -Mm-hmm -... is still very much documented and 401 00:19:34,951 --> 00:19:39,012 relevant inside of Laravel. So, fair enough. I, I think that's, uh... You know, 402 00:19:39,012 --> 00:19:42,531 it's again, sharp knives, use them if you want to, uh, if you don't... If you cut 403 00:19:42,531 --> 00:19:42,951 -yourself- -Yeah 404 00:19:42,951 --> 00:19:45,231 ... don't complain, right? Just deal with it. So... 405 00:19:45,231 --> 00:19:45,451 Yeah. 406 00:19:46,111 --> 00:19:48,531 It's certainly like a top level documentation item. 407 00:19:48,531 --> 00:19:49,391 -Yeah. -Right? It's 408 00:19:50,012 --> 00:19:53,771 in, on this page, introduction, writing controllers, controller middleware. So 409 00:19:53,771 --> 00:19:56,911 it's not hidden. It's not one of those things that, like, gets pushed 410 00:19:57,531 --> 00:20:00,771 down the documentation until one day it disappears and then you know that it's... 411 00:20:01,371 --> 00:20:01,532 It, 412 00:20:02,171 --> 00:20:04,411 it likely won't ever be removed. 413 00:20:05,332 --> 00:20:08,711 Eh, in, you know, the way that Laravel typically handles deprecations, is just 414 00:20:08,711 --> 00:20:09,571 that at some point 415 00:20:10,371 --> 00:20:13,731 it's determined to be not the best practice or, you know, there's another way 416 00:20:13,731 --> 00:20:17,692 of doing it that's, that's more appropriate or more, uh, efficient or 417 00:20:17,692 --> 00:20:21,971 whatever else. And so the documented approach becomes the way to do things, and 418 00:20:21,971 --> 00:20:22,852 stuff that drops out 419 00:20:23,491 --> 00:20:28,231 might get deprecated eventually, you know, in two or three major releases time. But, 420 00:20:29,051 --> 00:20:34,171 um, it typically survives even though it's not documented. So it's still, still 421 00:20:34,171 --> 00:20:35,571 there as a top level thing. But 422 00:20:36,411 --> 00:20:40,671 yeah, I don't, I don't see where this... I, I'd have to dig to find out, you know, 423 00:20:40,671 --> 00:20:44,711 why you would do it in a constructor. Like, what, what was the documented reason 424 00:20:44,711 --> 00:20:45,751 -for doing it- -Yeah 425 00:20:45,751 --> 00:20:47,451 -... essentially? -Yeah. I, I don't even know if I could tell 426 00:20:47,451 --> 00:20:50,872 you in this case. I, I think it... This one is honestly just... It was like a 427 00:20:50,872 --> 00:20:54,452 authorization check to see if somebody had a particular role or something like that, 428 00:20:54,452 --> 00:20:55,811 -that's all it was. -Mm-hmm. Mm-hmm. 429 00:20:56,471 --> 00:21:00,011 Like, "Can they do this particular thing?" If they can't do this particular thing, 430 00:21:00,011 --> 00:21:03,531 then there's no reason for them to see the view, the update, the create, the delete. 431 00:21:03,531 --> 00:21:06,051 Th- they shouldn't be able to do any of that stuff, like, don't bother even- 432 00:21:06,051 --> 00:21:07,531 -Right -... doing a policy on it. There was... 433 00:21:07,531 --> 00:21:10,471 This was before policies were a thing. You just said, "At the controller level, 434 00:21:10,471 --> 00:21:14,212 don't bother, just abort. Before they ever do anything with it, just abort." 435 00:21:15,112 --> 00:21:16,651 Which brings me to my next question. 436 00:21:18,152 --> 00:21:22,491 Um, unless you have anything else you wanna talk about, which I... So, I've got 437 00:21:22,491 --> 00:21:24,112 -one more thing and that's- -No, no, go for it. 438 00:21:24,112 --> 00:21:26,571 -Okay. Okay. -Are you... You meant, you, you, you 439 00:21:26,571 --> 00:21:30,231 floated this, like you got in early with this one, so you've... It's obviously on 440 00:21:30,231 --> 00:21:30,872 -your mind- -It is 441 00:21:30,872 --> 00:21:33,091 -... so let's talk about- -Yes. Okay. So we talked about this with 442 00:21:33,091 --> 00:21:35,311 the other devs on the team earlier today. Okay. So 443 00:21:36,151 --> 00:21:41,212 I'm gonna try and set up the world for you a little bit and then we can chat. And I 444 00:21:41,212 --> 00:21:44,551 think you can help me point out maybe some p- some potential flaws, 445 00:21:45,151 --> 00:21:49,411 or maybe not flaws but pitfalls that I might be looking into or that I might need 446 00:21:49,411 --> 00:21:53,911 to investigate and/or better ways to structure this. Okay, so here it is. 447 00:21:53,911 --> 00:21:57,351 -Mm-hmm. -Let's say I have 20 apps, which I do, and 448 00:21:57,351 --> 00:22:02,071 let's say that each of those applications has, currently has their own roles. 449 00:22:02,671 --> 00:22:06,451 And the way that we're checking permissions or abilities inside of any of 450 00:22:06,451 --> 00:22:10,831 these locations and inside of any of these applications is only through checking of 451 00:22:10,831 --> 00:22:15,851 if a user has a role. Okay? So that is, that is the way that we've done it. Now, 452 00:22:15,851 --> 00:22:16,991 the problem with that 453 00:22:17,751 --> 00:22:22,751 is that the onl- if you only define roles, the only way to give somebody permission 454 00:22:22,751 --> 00:22:25,491 to do something is to assign them a role. 455 00:22:26,151 --> 00:22:27,051 Does this make sense? 456 00:22:28,051 --> 00:22:28,571 -So- -Mm-hmm. Yep 457 00:22:28,571 --> 00:22:31,811 ... if you have a person, let's say that there's a manager who's stepping out for a 458 00:22:31,811 --> 00:22:36,071 week and they have a person on their team who's like their number two, right, 459 00:22:36,071 --> 00:22:40,791 assistant to the regional manager if you will. And they need this , they need this 460 00:22:40,791 --> 00:22:46,951 user to sort of take their place, interim, uh, manager, uh, for a week. The only 461 00:22:46,951 --> 00:22:49,971 way, i- but they really only need them to do one part of their job, which is that 462 00:22:49,971 --> 00:22:53,411 they need to run this report every day and send it to the CEO. Let's say that's the 463 00:22:53,411 --> 00:22:53,671 -deal. -Yeah. 464 00:22:53,671 --> 00:22:54,831 Right? That's it. That's all they need to do. 465 00:22:55,551 --> 00:22:59,511 But because the only way to give them that permission is to assign them that role, 466 00:22:59,511 --> 00:23:02,831 in addition to getting the ability to run the report, they also get the ability to 467 00:23:02,831 --> 00:23:08,151 put in coaching entries or reprimand other peop- or s- read entries for other 468 00:23:08,151 --> 00:23:11,671 teams', um, employees or team members that are on that team, right? Not what you're 469 00:23:11,671 --> 00:23:13,871 -asking for, not what you're looking for. -No. 470 00:23:13,871 --> 00:23:18,331 Certainly, like, not a least privileged situation. And so what we're running into 471 00:23:18,331 --> 00:23:21,751 is that we have people who have permissions that they should never have 472 00:23:21,751 --> 00:23:25,571 just because they were given them temporarily and then they were never 473 00:23:25,571 --> 00:23:29,351 removed. Right? So the only way that we can catch this is if we do these audits, 474 00:23:29,351 --> 00:23:32,311 which we end up doing, but it's a big pain in the neck. And there are ways, there 475 00:23:32,311 --> 00:23:34,731 are better ways to do this. So, 476 00:23:35,831 --> 00:23:40,031 I'm gonna ex- I'll explain to you sort of our proposition and then I'll continue to 477 00:23:40,031 --> 00:23:43,711 kinda go through how we wanna manage it. The proposition is in any place where we 478 00:23:43,711 --> 00:23:48,291 have a HasRoleCheck, we're gonna remove that HasRoleCheck and we're going to name 479 00:23:48,291 --> 00:23:53,231 the thing that they're trying to do at that check. So, instead of 480 00:23:54,091 --> 00:23:59,911 HasRole, we're going to s- HasRoleManager, we're gonna say CanRunReports. In that 481 00:23:59,911 --> 00:24:03,631 spot, that one spot where they check to see if they ha- if they're a manager. 482 00:24:03,631 --> 00:24:06,591 Instead we're going to say name that thing that they're trying to do, they're trying 483 00:24:06,591 --> 00:24:11,971 to run a report, and then we're going to ask the question User CanRunReports. 484 00:24:11,971 --> 00:24:15,791 Right? Okay. So we're going to change it from a role to a permission or ability. 485 00:24:15,791 --> 00:24:19,271 Permission and ability are the same word, essentially. Which do you prefer? 486 00:24:22,115 --> 00:24:28,635 Mm-hmm. I I think the, the general advice, like the 90%, 95% use case, is to assign 487 00:24:28,635 --> 00:24:30,856 -roles and check permissions. -Okay. Permissions. 488 00:24:30,856 --> 00:24:34,575 It's certainly the way that, that we operate, is that we will always check that 489 00:24:34,575 --> 00:24:37,415 -the user can do something. -Yeah. Okay. 490 00:24:37,415 --> 00:24:38,435 We would never... Well, 491 00:24:39,155 --> 00:24:45,435 I say never. In our modern stuff , in our new stuff, it's always a permission check. 492 00:24:45,435 --> 00:24:45,995 Okay. 493 00:24:45,995 --> 00:24:51,315 Uh, or a policy check or whatever else. Previously, in our old code, it w- it was 494 00:24:51,315 --> 00:24:53,276 -base... Like, we would assign roles. -Yeah. Yeah. 495 00:24:53,276 --> 00:24:56,915 We had a permissions table, but p- but permissions were never implemented, so it 496 00:24:56,915 --> 00:25:00,195 was always like, "Is... Does this user have a role?" 497 00:25:00,195 --> 00:25:01,515 -Yeah. -We would always check are they an admin, 498 00:25:01,515 --> 00:25:02,215 -are they a manager. -Yep. 499 00:25:02,215 --> 00:25:07,175 Are they a group manager. We had, um... And, and like you say, that then means 500 00:25:07,175 --> 00:25:10,235 that that person has access to everything 501 00:25:11,195 --> 00:25:13,216 that that role enables them, 502 00:25:13,915 --> 00:25:19,155 um, whereas you want, typically, I think, your permissions to be as granular as 503 00:25:19,155 --> 00:25:19,655 possible. 504 00:25:20,455 --> 00:25:25,055 Yes. The... Yes, correct. I agree with all of that. Um, my question specifically is, 505 00:25:25,055 --> 00:25:28,635 when we're talking about that, you're using the word permissions to talk about a 506 00:25:28,635 --> 00:25:32,415 granular level thing that they can do. Another word that I've heard used for that 507 00:25:32,415 --> 00:25:34,575 -is ability. So, my question is- -Mm-hmm 508 00:25:34,575 --> 00:25:37,675 ... for the remainder of our discussion, would you prefer me call them permissions 509 00:25:37,675 --> 00:25:38,475 or abilities? 510 00:25:41,155 --> 00:25:44,075 It depends on what you... If you're just using Lyro stuff, I'd call them 511 00:25:44,075 --> 00:25:46,755 -permissions. -Okay. So, yeah, permissions. And that's 512 00:25:46,755 --> 00:25:48,175 -what my guys sort of said too. They said- -And you- 513 00:25:48,175 --> 00:25:50,815 ... "Oh, we like to call them permissions instead of abilities." 'Cause I've called 514 00:25:50,815 --> 00:25:51,415 -them abilities- -Yeah 515 00:25:51,415 --> 00:25:52,995 ... in the past, and I th- we can call them- 516 00:25:52,995 --> 00:25:53,755 -Yeah -... permissions. That's fine. 517 00:25:53,755 --> 00:25:56,015 -It's a bit... Like, I think bouncer? -Yes. 518 00:25:56,015 --> 00:25:57,275 'Cause I know you've used bouncer in the past. 519 00:25:57,275 --> 00:25:57,715 Well that, well that's because of abilities. 520 00:25:57,715 --> 00:25:59,195 Bouncer refers to the roles and abilities. 521 00:25:59,195 --> 00:26:01,975 -Yeah. Yeah. -Yeah, right. Um, I think... How would you 522 00:26:01,975 --> 00:26:03,255 -think about this? -And then there are no permissions, we're 523 00:26:03,255 --> 00:26:04,515 first giving out permissions. 524 00:26:05,755 --> 00:26:06,055 Yeah. 525 00:26:06,855 --> 00:26:10,495 Like, you have permission to do something, but you have the ability 526 00:26:12,135 --> 00:26:12,595 to 527 00:26:14,395 --> 00:26:17,035 -enact that, that something, right? -Yeah. Yeah. 528 00:26:17,035 --> 00:26:20,475 So, I think it depends on which way you're looking at... You know, is the user 529 00:26:21,255 --> 00:26:25,175 the one that... You know, does the user have the ability to do this thing? 530 00:26:26,935 --> 00:26:29,055 -It- -I know. They're, they're synonymous. 531 00:26:29,055 --> 00:26:30,515 -The user has the ability- -They're synonymous. Yeah. 532 00:26:30,515 --> 00:26:32,075 Or does the user have the permission? Yeah. 533 00:26:32,075 --> 00:26:34,955 Yeah. And so, I'm just trying to establish, like, uh, the domain language 534 00:26:34,955 --> 00:26:38,255 for our team, like, whether we're gonna be using the word ability, permission. I've 535 00:26:38,255 --> 00:26:39,315 -used the word ability- -Yeah 536 00:26:39,315 --> 00:26:40,695 ... but I think we're switching over to using the word permission. 537 00:26:40,695 --> 00:26:43,355 Sounds like if the rest of your... Yeah, I was gonna say, it sounds like if the rest 538 00:26:43,355 --> 00:26:43,795 -of your team- -Yeah 539 00:26:43,795 --> 00:26:45,675 -... is using permission- -Yeah, that's the word that they would like 540 00:26:45,675 --> 00:26:47,175 -to use -... then, then you're using permission. 541 00:26:47,175 --> 00:26:50,195 -Agreed. -Um, and like I said, I, I think the, the 542 00:26:50,195 --> 00:26:50,595 fact that 543 00:26:51,295 --> 00:26:54,235 ability is in your head is probably owing to the fact that you used- 544 00:26:54,235 --> 00:26:55,735 -100% -... that you've used bouncer in the past 545 00:26:55,735 --> 00:26:56,795 -as well. -Yes, it is. 546 00:26:56,795 --> 00:26:59,315 But, like, the Sparcy, Sparcy has a permissions package. 547 00:26:59,315 --> 00:27:01,095 -Yeah. -I think generally when people speak about 548 00:27:01,095 --> 00:27:04,975 -it, it's permission rather than... Yeah. -Yeah. Okay. So, 549 00:27:05,835 --> 00:27:09,275 we've got permissions, right? In every spot where we're doing the HasRole, we're 550 00:27:09,275 --> 00:27:12,995 going to check, uh... Instead of HasRole, we're gonna say HasPermission essentially. 551 00:27:12,995 --> 00:27:17,435 Think about it that way, right? So, we're gonna make everything very granular, and 552 00:27:17,435 --> 00:27:20,935 so our application will check for permissions. Now, 553 00:27:21,675 --> 00:27:27,295 the second part of this is imagine that across those 20 apps, you know, every app 554 00:27:27,295 --> 00:27:31,875 has its own set of permissions that, that are a part of that, right? 555 00:27:32,715 --> 00:27:33,475 -Now- -Mm-hmm 556 00:27:33,475 --> 00:27:38,915 ... who manages those permissions is the question. Who gets to manage those? Well, 557 00:27:38,915 --> 00:27:43,895 I will tell you, my preference is that I never ever manage those. I want my team to 558 00:27:43,895 --> 00:27:49,275 write the code that enables people who have that permission to do that thing. 559 00:27:49,275 --> 00:27:50,955 -That's what I want my team to do. -Mm-hmm. 560 00:27:50,955 --> 00:27:55,435 But I do not want my team to manage permissions. I want the IT staff to do 561 00:27:55,435 --> 00:27:55,735 that. 562 00:27:56,395 --> 00:27:56,995 -Um- -Right 563 00:27:56,995 --> 00:27:57,255 ... and 564 00:27:58,115 --> 00:27:58,595 for them, 565 00:27:59,375 --> 00:28:02,355 even only in a limited capacity. So, um, 566 00:28:03,075 --> 00:28:07,855 what I would like to have happen then is if you can think of a 567 00:28:08,515 --> 00:28:11,835 different application... So you have these 20 applications that live on the bottom 568 00:28:11,835 --> 00:28:14,795 level there, and all those le- all those are doing is they're checking for 569 00:28:14,795 --> 00:28:16,355 abilities. So, there is essentially no, 570 00:28:17,195 --> 00:28:21,975 no concept of roles anymore in those. We're gonna rip those out of that 571 00:28:21,975 --> 00:28:27,255 application. No roles anymore. It's just permission checks. We're gonna go up a 572 00:28:27,255 --> 00:28:31,255 layer, and now you're gonna have an application, uh, one layer above that 573 00:28:31,255 --> 00:28:33,355 knows about all the different applications 574 00:28:34,095 --> 00:28:38,975 and then knows about all the different roles in those applications, and then 575 00:28:38,975 --> 00:28:42,915 groups together different permissions for those particular roles. 576 00:28:44,515 --> 00:28:45,615 -Mm-hmm. -Does that make sense? Now, that 577 00:28:45,615 --> 00:28:49,995 application that sits above that is active directory, essentially, is the idea, 578 00:28:49,995 --> 00:28:51,315 -right? -It's exactly what that is. Yeah. 579 00:28:51,315 --> 00:28:54,635 I mean, that's what it is. And so, and so what we're thinking is, like, why reinvent 580 00:28:54,635 --> 00:28:58,275 the wheel on that? E- essentially what we do is we have a user, 581 00:28:58,895 --> 00:29:03,035 and that user will have a job function, which is essentially their job title, 582 00:29:03,035 --> 00:29:06,655 right? So if I have a banking manager, 583 00:29:07,475 --> 00:29:12,795 um, that banking manager is going to have specific permissions inside of each of 584 00:29:12,795 --> 00:29:17,555 those 20 different applications, right? Inside of some of those applications, they 585 00:29:17,555 --> 00:29:22,755 may have a role of manager. So, like in the case of, like, coaching, right? 586 00:29:23,735 --> 00:29:25,995 -Mm-hmm. -Because they're a manager, they're going 587 00:29:25,995 --> 00:29:30,735 to have likely a coaching manager role inside that application, but the 588 00:29:30,735 --> 00:29:34,655 application doesn't know anything about that. All it knows about at the end of the 589 00:29:34,655 --> 00:29:38,515 day is which permissions that user was granted when they come in. 590 00:29:39,215 --> 00:29:43,255 The way that this will be structured then in Active Directory is you will have a 591 00:29:43,255 --> 00:29:43,915 coaching_, 592 00:29:45,155 --> 00:29:50,375 so it's actually namespaced in Active Directory. App_coaching, which is the name 593 00:29:50,375 --> 00:29:53,795 of the app, _role or ability. So, 594 00:29:54,435 --> 00:29:58,975 app_coaching_manager. That's the role, right? 595 00:29:58,975 --> 00:30:01,575 -Mm-hmm. Mm-hmm. -And then nested underneath that 596 00:30:02,375 --> 00:30:07,455 would be additional security groups that would apply to that particular role, 597 00:30:07,455 --> 00:30:11,535 right? So app_coaching can add new coaching log. 598 00:30:12,335 --> 00:30:13,675 App_coaching- 599 00:30:14,275 --> 00:30:15,795 -Yep -... can run coaching reports. 600 00:30:16,475 --> 00:30:20,915 And those abilities may only live under app coaching manager, but they also may 601 00:30:20,915 --> 00:30:26,656 run under... May live under app coaching admin.Right? So those abilities have 602 00:30:26,656 --> 00:30:29,795 basically a one-to-many relationship between- 603 00:30:29,795 --> 00:30:32,715 -Mm-hmm -... those, uh, those different security 604 00:30:32,715 --> 00:30:37,095 groups. Okay? And then each user would get assigned to one of those security roles. 605 00:30:37,095 --> 00:30:39,935 Okay. The reason why that's all important is because 606 00:30:40,535 --> 00:30:44,775 when a user is created in the system, they will get a single 607 00:30:45,496 --> 00:30:46,116 set of 608 00:30:47,715 --> 00:30:51,115 roles. That's it, that's what they get. They get the ones that belong to their 609 00:30:51,115 --> 00:30:53,655 particular job function and nothing else. 610 00:30:54,475 --> 00:30:55,635 -So if- -Mm-hmm 611 00:30:55,635 --> 00:30:59,356 ... that user that was previously mentioned needs to take over for their 612 00:30:59,356 --> 00:31:02,176 manager for a week to run that report, 613 00:31:03,035 --> 00:31:05,336 instead of giving them 614 00:31:06,016 --> 00:31:12,695 app_coaching_runreport, or sorry, a- app_coaching_manager, they would get the 615 00:31:12,695 --> 00:31:17,595 ability of app_coaching_cannrunreport. They would get that single ability rather 616 00:31:17,595 --> 00:31:20,435 than the manager role. Now here's the really interesting thing. 617 00:31:21,875 --> 00:31:26,155 We are going to say that anybody who needs an additional permission outside of the 618 00:31:26,155 --> 00:31:31,535 ones that apply to their specific role, they only get a lease on that permission. 619 00:31:33,515 --> 00:31:34,775 -Yeah. -Does that make sense? So it's- 620 00:31:34,775 --> 00:31:37,075 -Yep -... expiring, meaning that they can ask 621 00:31:37,075 --> 00:31:42,555 for it for a period of time, and then after that, it goes away. It gets removed- 622 00:31:42,555 --> 00:31:42,675 Yeah 623 00:31:42,675 --> 00:31:43,775 -... from their user- -Yeah 624 00:31:43,775 --> 00:31:46,835 ... so that we don't end up with this mess of what we're talking about, where a user 625 00:31:46,835 --> 00:31:50,435 gets a permission and it just is signed forever. So you have somebody who started 626 00:31:50,435 --> 00:31:53,655 in one team and they've moved three times, and now they have inherited permissions 627 00:31:53,655 --> 00:31:55,675 for every single team they've ever been on. 628 00:31:55,675 --> 00:31:58,015 -Yeah. Mm-hmm. -Which is a freaking disaster mess. 629 00:31:58,655 --> 00:31:59,615 -Um- -Yeah 630 00:31:59,615 --> 00:32:02,855 ... and it's really unclear what they actually still need and what they don't 631 00:32:02,855 --> 00:32:04,035 -because they were never removed. -Mm-hmm. 632 00:32:05,075 --> 00:32:05,415 -Yeah. -And so 633 00:32:06,015 --> 00:32:07,715 that's the big picture of what we're trying to- 634 00:32:07,715 --> 00:32:08,975 -So- -... accomplish. Yeah. 635 00:32:09,855 --> 00:32:14,835 Mm-hmm. So are these, the expiring permissions, are they being managed inside 636 00:32:14,835 --> 00:32:19,255 of Active Directory, or are you doing that, like some scheduled task that goes 637 00:32:19,255 --> 00:32:23,075 through and, and cleans up these permissions where expiry date is in the 638 00:32:23,075 --> 00:32:25,355 -past? -Yeah, you got it. And so it's actually a 639 00:32:25,355 --> 00:32:28,915 little bit silly. We're using AD LDAP, so Active Directory- 640 00:32:28,915 --> 00:32:31,275 -Mm-hmm -... L- LDAP. What is, uh, listing 641 00:32:31,275 --> 00:32:33,855 directory? I don't know. It's, like, that protocol basically that lets you- 642 00:32:33,855 --> 00:32:35,375 -Yeah, yeah, yeah -... talk to those things. 643 00:32:35,375 --> 00:32:37,315 -Yeah. -And what we do is when somebody wants an 644 00:32:37,315 --> 00:32:40,775 additional permission, we can say, "Okay, they want..." You know, select the 645 00:32:40,775 --> 00:32:43,355 application you're trying to get permissions for. Coaching. "All right, 646 00:32:43,355 --> 00:32:47,355 here are all the ab- roles and the abilities that are available for you to 647 00:32:47,355 --> 00:32:51,475 lease." "Okay, I want to be able to run the report." "Okay. When does it, when 648 00:32:51,475 --> 00:32:55,555 does it expire?" "It expires in, in a week." And then they say, "Okay, request." 649 00:32:55,555 --> 00:32:59,715 Their manager has to look at it, approve it, and once their manager approves it, it 650 00:32:59,715 --> 00:33:00,115 will then 651 00:33:00,775 --> 00:33:07,655 send that off to our auth application, and then that thing actually adds that, uh, 652 00:33:07,655 --> 00:33:08,135 group... 653 00:33:09,115 --> 00:33:10,375 -Uh, sorry, adds that user- -Mm-hmm 654 00:33:10,375 --> 00:33:13,555 -... sorry, to that group. -Yeah. 655 00:33:13,555 --> 00:33:14,055 And then 656 00:33:14,715 --> 00:33:19,755 it will, you know, check the end date every day at 7:00 AM, and when the end day 657 00:33:19,755 --> 00:33:23,695 hits, it will remove that user from that group. And then when they log in the next 658 00:33:23,695 --> 00:33:28,275 time, it will look at the AD groups that they are a part of and it will remove the 659 00:33:28,275 --> 00:33:31,255 ability that they previously had, uh, when they logged in- 660 00:33:31,255 --> 00:33:32,035 -Right -... last time. 661 00:33:32,035 --> 00:33:34,015 -Mm-hmm. -So that's the idea. Now the, the big 662 00:33:34,015 --> 00:33:37,915 challenges that I'm running into here is that this top level app, 663 00:33:38,535 --> 00:33:41,735 uh, that's going to help manage all these things has to be aware of all the 664 00:33:41,735 --> 00:33:45,115 different mappings that I have for these abilities inside of all these different 665 00:33:45,115 --> 00:33:47,375 -applications, which is- -Yeah 666 00:33:47,375 --> 00:33:52,355 ... that is the pain, but I don't really know of a better way to do it if I don't 667 00:33:52,355 --> 00:33:52,675 -want- -Yeah 668 00:33:52,675 --> 00:33:53,755 ... my team to manage it. 669 00:33:55,215 --> 00:33:57,595 Yeah. And it also means that anytime you add a permission 670 00:33:58,215 --> 00:33:59,775 somewhere, you've gotta do it in two places. 671 00:33:59,775 --> 00:34:01,335 -Yes, correct. -You've gotta do it in the app, and you've 672 00:34:01,335 --> 00:34:03,195 -gotta do it in the- -Active Directory 673 00:34:03,195 --> 00:34:04,195 -... the overseer- -Yeah 674 00:34:04,195 --> 00:34:04,995 -... as well. -Yeah. 675 00:34:04,995 --> 00:34:05,115 Yeah. 676 00:34:06,995 --> 00:34:12,255 But yeah, I mean, and, and expiring permission is a good way to, to deal with 677 00:34:12,255 --> 00:34:14,735 it, I think, especially from a compliance perspective. 678 00:34:14,735 --> 00:34:16,455 -Yeah, exactly. -You know, no one should have access to 679 00:34:16,455 --> 00:34:18,215 things that they shouldn't have access to, so having that- 680 00:34:18,215 --> 00:34:20,075 -And we can see when they requested it -... That's amazing. And it's like... 681 00:34:20,875 --> 00:34:24,295 Yeah. Yeah, if you're keeping audit trail of it, that's, that's gonna be helpful for 682 00:34:24,295 --> 00:34:27,555 that kind of stuff as well, 'cause you know that no one's got access to anything 683 00:34:27,555 --> 00:34:31,535 that they shouldn't. And if they do, you know, they shouldn't typically have access 684 00:34:31,535 --> 00:34:34,995 to it. You know when they requested it, when it was approved, by who, and when it 685 00:34:34,995 --> 00:34:37,455 was removed. And, um, 686 00:34:39,195 --> 00:34:42,595 yeah, I mean, it's no different to how when you create GitHub tokens and things 687 00:34:42,595 --> 00:34:46,215 like that, you can request for it to be, you know, seven days or 30 days or 90 days 688 00:34:46,215 --> 00:34:50,495 or, or, or unlimited. And as much as it annoys me every 30 days to have to, to 689 00:34:50,495 --> 00:34:51,575 -roll a token- -I know, right 690 00:34:51,575 --> 00:34:55,535 ... I think probably having a, a 30 day token is, is still the, the correct answer 691 00:34:55,535 --> 00:34:56,315 for most things. 692 00:34:57,115 --> 00:34:59,675 -Yeah, there's, um, the- -Spreaker. Spreaker on the pitch. 693 00:34:59,675 --> 00:35:00,475 Yeah. Oh, he's 694 00:35:01,095 --> 00:35:01,395 ... 695 00:35:02,055 --> 00:35:02,135 He- 696 00:35:02,815 --> 00:35:06,275 he's got his, uh, he's got his pajamas on. Harrison, you wanna say hi 697 00:35:07,675 --> 00:35:09,715 real quick? Come here. Come here. Yeah, that's fine. 698 00:35:09,715 --> 00:35:12,555 -The baby of the bunch. -Har- come say hi here. Hold on. Hold on. 699 00:35:12,555 --> 00:35:13,415 Let me put your head phone. 700 00:35:14,395 --> 00:35:16,395 -Look at him. -Say, say hey, Michael. 701 00:35:16,395 --> 00:35:17,335 Hi, Michael. So big. 702 00:35:18,495 --> 00:35:19,355 Hey, man. How you doing? 703 00:35:20,215 --> 00:35:20,235 He's s- 704 00:35:20,875 --> 00:35:22,955 -He's doing good. -I remember the, the last time I saw him 705 00:35:22,955 --> 00:35:25,275 was teeny tiny in a pram 706 00:35:25,955 --> 00:35:26,695 in New York. 707 00:35:27,355 --> 00:35:30,135 -That's how long ago that was. -Oh, that's right. Dude, that was Laracon. 708 00:35:30,135 --> 00:35:31,075 -No, look at him. -Harrison, you were in Laracon. 709 00:35:31,075 --> 00:35:32,575 -Yeah. -You were at Laracon with us at eight weeks 710 00:35:32,575 --> 00:35:33,235 old, remember? 711 00:35:34,515 --> 00:35:35,175 You don't remember. 712 00:35:36,095 --> 00:35:38,395 -I don't remember. -No, he don't remember. All right, say, 713 00:35:38,395 --> 00:35:39,175 say, "Hello world." 714 00:35:40,135 --> 00:35:41,455 Say it l- nice and loud to everybody. 715 00:35:42,155 --> 00:35:43,775 Hello world. 716 00:35:45,195 --> 00:35:46,615 -There he is. -I love the eye roll. Sorry. 717 00:35:46,615 --> 00:35:47,435 Sorry. Bye, Harry. 718 00:35:48,595 --> 00:35:48,875 Um, 719 00:35:49,595 --> 00:35:54,075 so, uh, yeah, what was the last thing I was gonna s- oh, here's the other piece of 720 00:35:54,075 --> 00:35:55,535 this which is really interesting, I think. 721 00:35:56,135 --> 00:35:57,315 Um, if, so 722 00:35:57,935 --> 00:36:02,435 when a permission is about to expire, we can send an email out and say, "Hey, you 723 00:36:02,435 --> 00:36:05,815 have this permission which is about to expire. If you need to extend your lease 724 00:36:05,815 --> 00:36:06,535 -on it- -Mm-hmm 725 00:36:06,535 --> 00:36:10,235 ... you can request, uh, an extension here." And they could click it. It could 726 00:36:10,235 --> 00:36:10,475 -fire- -Yeah 727 00:36:10,475 --> 00:36:13,155 ... off that extension request, and then their manager could approve it again, and 728 00:36:13,155 --> 00:36:17,175 then it could happen. Right. So I think it re- and so what that allows essentially, 729 00:36:17,175 --> 00:36:20,875 is that allows me to not only actually remove the burden from my software 730 00:36:20,875 --> 00:36:24,875 development team, it actually also removes the ability of my IT guys to get 731 00:36:24,875 --> 00:36:26,955 involved. They'll have to add new permissions- 732 00:36:26,955 --> 00:36:29,135 -Mm-hmm -... but they should never really have to 733 00:36:29,135 --> 00:36:33,555 get involved in the modifying of permissions outside of- 734 00:36:33,555 --> 00:36:35,255 -Yeah -... if we need to add a default permission 735 00:36:35,255 --> 00:36:41,423 to a particular job function or job role. Right? Um...So it'll be a little bit of 736 00:36:41,423 --> 00:36:44,803 like a hand in glove situation where we do need to work closely with them on some of 737 00:36:44,803 --> 00:36:48,484 those things. But as it is right now, it's sort of a pain the neck because 738 00:36:48,484 --> 00:36:51,663 they'll have to message one of the software devs and be like, "Hey, somebody 739 00:36:51,663 --> 00:36:54,904 said they need to run that report. What role do they need?" That's, that's... 740 00:36:54,904 --> 00:36:56,484 'Cause there's, it's not transparent to them at all- 741 00:36:56,484 --> 00:36:58,723 -Yeah -... what, what roles are needed for what 742 00:36:58,723 --> 00:37:00,123 particular abilities. And so 743 00:37:00,864 --> 00:37:03,663 it's just we're trading problems, and I think it's a better solution. 744 00:37:03,663 --> 00:37:03,964 Yeah. 745 00:37:04,944 --> 00:37:07,043 -So. -So two, two things that I just thought of. 746 00:37:07,043 --> 00:37:12,823 Number one, um, how easy are you making it? So if I have to go and request 747 00:37:12,823 --> 00:37:17,183 permission to do some report, is it fairly obvious that I'm like, "This is the 748 00:37:17,183 --> 00:37:18,243 permission that I want"? 749 00:37:18,884 --> 00:37:21,303 -Right. Like- -Are you naming them in such a way? 'Cause- 750 00:37:21,303 --> 00:37:21,944 Yeah 751 00:37:21,944 --> 00:37:26,603 ... most, most permission stuff would be transparent to... I mean, maybe managers 752 00:37:26,603 --> 00:37:30,403 know what the permissions are. You know, there would be some level of knowledge 753 00:37:30,403 --> 00:37:34,283 there depending on their technical skill. But for most, most workers, I would 754 00:37:34,283 --> 00:37:36,364 imagine that they don't know what they're asking for. 755 00:37:36,364 --> 00:37:40,563 That's agreed. That- that's true. And I think right now, it's completely obli- n- 756 00:37:40,563 --> 00:37:42,763 -nobody knows. There's no good catalog- -Yeah 757 00:37:42,763 --> 00:37:46,523 ... of abilities, right? And so what we would have to do as part of this is we'd 758 00:37:46,523 --> 00:37:49,543 have to... You know, we'd give it a good name, and we've got a convention that 759 00:37:49,543 --> 00:37:52,063 we're using to convert the abilities, um, 760 00:37:52,883 --> 00:37:58,943 to good named AD security objects. And then we need to give good definitions to 761 00:37:58,943 --> 00:38:00,943 them as well. A- and so that'll be part of- 762 00:38:00,943 --> 00:38:02,663 -Yeah -... the process of converting these over, 763 00:38:02,663 --> 00:38:06,603 is just making sure that we give good descriptions of what they are. And then 764 00:38:06,603 --> 00:38:10,663 we'll probably have to do something like a package, honestly, something that's going 765 00:38:10,663 --> 00:38:14,563 to help to coordinate the different abilities between the different 766 00:38:14,563 --> 00:38:20,323 applications. Or we'll have to create an endpoint that lives on these applications 767 00:38:20,323 --> 00:38:24,683 where they can be hit and queried, and then they can return back those, those 768 00:38:24,683 --> 00:38:26,903 pieces of data. 'Cause I really don't wanna have to 769 00:38:27,703 --> 00:38:28,583 update... 770 00:38:29,523 --> 00:38:31,943 I- I don't wanna have to update a package every time I wanna add a new ability. I 771 00:38:31,943 --> 00:38:33,643 -don't wanna have to do that. And so- -Right 772 00:38:33,643 --> 00:38:36,603 ... I think if we just created an endpoint that was like, "Hey, give me all the 773 00:38:36,603 --> 00:38:40,803 different ability. Give me, give me your permissions catalog," and it could, it 774 00:38:40,803 --> 00:38:45,403 could say what those are, then we can just essentially advertise that and, you know, 775 00:38:45,403 --> 00:38:49,803 use an API token, go grab the abilities, uh, the abilities catalog, and then, um, 776 00:38:51,103 --> 00:38:53,963 push those into a config item or something like that. You know what I mean? I'm not 777 00:38:53,963 --> 00:38:54,303 -using the- -Yeah 778 00:38:54,303 --> 00:38:55,043 -... right wording here, but that- -Yeah 779 00:38:55,043 --> 00:38:57,063 ... that would be the idea. So yeah, that, I think- 780 00:38:57,063 --> 00:38:58,083 -Yeah -... that would be how you'd do it. You 781 00:38:58,083 --> 00:39:00,943 would try and make it as obvious as we could. So that was, that was number one. 782 00:39:00,943 --> 00:39:01,223 Yeah. 783 00:39:02,363 --> 00:39:04,923 -And you had number two. -Um, I think the, the other thing, the 784 00:39:04,923 --> 00:39:09,603 other thing was, you know, if, if you needed to request an extension... I mean, 785 00:39:09,603 --> 00:39:10,863 you, you said at the top that 786 00:39:12,143 --> 00:39:15,783 people would be asking for permission to do something because their manager is 787 00:39:15,783 --> 00:39:17,443 -going to be away. So if they need- -Ah 788 00:39:17,443 --> 00:39:19,823 ... to extend that, who's, who's approving that? 789 00:39:19,823 --> 00:39:21,643 -Yeah, no. -Because the manager's obviously, you know, 790 00:39:21,643 --> 00:39:23,663 -away for a bit longer, so there's- -That's a good- 791 00:39:23,663 --> 00:39:26,043 -... that's something to consider as well. -That's a good question. Um- 792 00:39:26,043 --> 00:39:27,563 Like, someone would have to approve it, 793 00:39:28,203 --> 00:39:29,063 -um- -Yeah 794 00:39:29,063 --> 00:39:32,063 ... and they would probably... Like, I would, I would say that that is more the 795 00:39:32,063 --> 00:39:36,043 exception than the norm, where maybe, you know, your team or IT would have to step 796 00:39:36,043 --> 00:39:36,383 -in and go- -Yes 797 00:39:36,383 --> 00:39:37,363 ... "Well, they had it." 798 00:39:38,183 --> 00:39:39,963 Yeah, typically, that, that has happened before. 799 00:39:39,963 --> 00:39:41,703 -But then you'd have- -Yeah, where, where we would have somebody 800 00:39:41,703 --> 00:39:44,003 -who's away- -And I think you would probably have some 801 00:39:44,003 --> 00:39:45,423 -rules around that as well. -Yeah. 802 00:39:45,423 --> 00:39:49,883 Like, you can only request one extension, or the extension can only be for two days 803 00:39:49,883 --> 00:39:50,943 -or something like that. -Yeah. 804 00:39:50,943 --> 00:39:54,863 And we did a, we did a similar kind of thing with, 805 00:39:55,823 --> 00:40:00,303 um, like invoices. When you've got an overdue invoice, you can request an 806 00:40:00,303 --> 00:40:04,283 extension. And so the, the frontline staff would have permission to request an 807 00:40:04,283 --> 00:40:07,643 extension, and there'd be, there was a series of rules. Like, you could, you 808 00:40:07,643 --> 00:40:12,243 could ask for s- uh, 14 days or seven days, but you could only ask for each 809 00:40:12,243 --> 00:40:16,303 once. So initially, you'd get like a 14-day buffer. And then if you had already 810 00:40:16,303 --> 00:40:19,943 asked for 14 days, you could only ask for a seven-day extension from there. 811 00:40:20,583 --> 00:40:23,843 And then there was like... that was it. And that was, like, enforcing business 812 00:40:23,843 --> 00:40:28,163 rules ar- around those kinds of things. Because there's also this expectation of, 813 00:40:28,163 --> 00:40:32,323 um... This was in telecommunications, so there's, there's a whole code of practice 814 00:40:32,323 --> 00:40:34,363 around, um, not 815 00:40:35,303 --> 00:40:38,283 l- allowing customers to get, you know, dig themselves into debt- 816 00:40:38,283 --> 00:40:40,143 -Yeah, yeah -... over these kinds of things that, you 817 00:40:40,143 --> 00:40:43,643 know, you would have to, you'd have to cut them off. You wouldn't be able to keep 818 00:40:43,643 --> 00:40:46,283 extending them so that you didn't keep charging them for a service that they 819 00:40:46,283 --> 00:40:47,463 -clearly can't pay for or- -Yeah 820 00:40:47,463 --> 00:40:49,343 ... or had no interest in paying for. So, 821 00:40:49,943 --> 00:40:53,523 um, yeah, maybe something like that where, you know, you get one, 822 00:40:54,583 --> 00:40:58,743 one, um, bump. You know, it gives you an extra three days or something. 823 00:40:59,543 --> 00:41:02,663 And then beyond that, you have to ask for a whole new thing. 824 00:41:02,663 --> 00:41:03,543 -Yeah. -Um, 825 00:41:04,323 --> 00:41:08,743 that, you know... Yeah, w- what that looks like for, for your organization and, and 826 00:41:08,743 --> 00:41:12,463 how you implement that or what the, what the business rules around that is, 827 00:41:13,423 --> 00:41:16,943 you know, up to, up to you guys. But it might be one approach that, that could be 828 00:41:16,943 --> 00:41:19,683 -suitable. -It's a good idea to have a maximum number 829 00:41:19,683 --> 00:41:23,663 of, um, extensions that you could do though. I think that's a great idea. It's 830 00:41:23,663 --> 00:41:24,223 -not something- -Right 831 00:41:24,223 --> 00:41:27,003 ... I'd thought of before. 'Cause yeah, otherwise you could just have somebody 832 00:41:27,003 --> 00:41:29,863 continue to request extensions and just kind of go that way. And- 833 00:41:29,863 --> 00:41:31,423 -Mm-hmm -... that does defeat the purpose a little 834 00:41:31,423 --> 00:41:33,663 bit, especially if we have, like, long-term leases. 835 00:41:33,663 --> 00:41:37,083 You could ask for a new... Yeah, but you could, you could ask for a new- 836 00:41:37,083 --> 00:41:37,883 -Correct -... extension. 837 00:41:37,883 --> 00:41:41,463 -Yes. Absolutely. Yeah, you- -But it would, like, you couldn't just, you 838 00:41:41,463 --> 00:41:44,683 couldn't have like a seven-day extension for the time that manager's away, and then 839 00:41:44,683 --> 00:41:47,243 you would just ask for like... I would just top that up for another three days, 840 00:41:47,243 --> 00:41:47,763 -another three days- -Yeah 841 00:41:47,763 --> 00:41:49,823 ... another three days. Like, you would wanna set a cap on that. 842 00:41:49,823 --> 00:41:51,803 -Yeah. -But if they, there was genuinely a need 843 00:41:51,803 --> 00:41:54,703 for it, you know, if the manager had delegated the responsibility of running 844 00:41:54,703 --> 00:41:58,703 that report to someone else, then, you know, that would just have to request that 845 00:41:58,703 --> 00:41:59,863 -permission, you know- -Absolutely 846 00:41:59,863 --> 00:42:02,343 -... and say, "Okay, yes-" -And we have, I think the solution- 847 00:42:02,343 --> 00:42:04,403 "... let's do it again. Here's another seven days or here's 30 days now." 848 00:42:04,403 --> 00:42:07,723 Yeah, the solution in that instance would be like these long-term leases that we 849 00:42:07,723 --> 00:42:09,243 -would have, that would be like- -Mm-hmm 850 00:42:09,243 --> 00:42:12,383 ... you could request up to like a six-month lease or something like that. If 851 00:42:12,383 --> 00:42:12,643 -you're- -Yeah 852 00:42:12,643 --> 00:42:15,563 ... if, you know, in some instances, maybe it'd go through an additional approval 853 00:42:15,563 --> 00:42:18,563 process or something where it's like, "Why are you asking for a six-month approval?" 854 00:42:18,563 --> 00:42:19,103 Mm-hmm. 855 00:42:19,103 --> 00:42:21,783 Uh, you have to have the approval of two... Or sorry, a six-month lease, you 856 00:42:21,783 --> 00:42:24,983 have to have the approval of two people in order to get that or something. Um, and 857 00:42:24,983 --> 00:42:27,783 if it was gonna be made a more permanent part of a role or delegated to somebody 858 00:42:27,783 --> 00:42:31,643 else, then we might need to make an additional layer, an initial role, like a 859 00:42:31,643 --> 00:42:35,623 training, uh, assistant. You know what I mean? Something like that role. And then 860 00:42:35,623 --> 00:42:40,103 they just get that ability as well. Um, but again, the nice thing about this is 861 00:42:40,103 --> 00:42:43,503 that if we needed to make that role, we would not have to be involved with that at 862 00:42:43,503 --> 00:42:45,863 all. That decision can be made higher up the chain- 863 00:42:45,863 --> 00:42:47,103 -Mm-hmm -... and we just check for the ability. 864 00:42:47,103 --> 00:42:49,163 -Yeah. -So it's really nice. 865 00:42:49,163 --> 00:42:50,283 -Yeah. -It allows the IT teams- 866 00:42:50,283 --> 00:42:52,363 -Yeah. The roles can be created whenever. -You got it. 867 00:42:52,363 --> 00:42:55,323 Yeah, roles can be created whenever, as long as they're composed of existing 868 00:42:55,323 --> 00:42:57,583 -permissions. -You got it exactly right. And so I think 869 00:42:57,583 --> 00:43:03,023 that really frees them up to do a lot of work. Now-... um, the, the trick is naming 870 00:43:03,023 --> 00:43:07,023 the abilities well, and then the second trick is making sure that they kinda stay 871 00:43:07,023 --> 00:43:13,363 in sync across this, uh, orchestrating, uh, entity that, th- that sits above it. 872 00:43:13,363 --> 00:43:13,884 And so... 873 00:43:14,803 --> 00:43:18,364 That's it. That's it, but I, I think, I think that works. Um, 874 00:43:19,783 --> 00:43:23,824 and I think we actually might be able to get away without using permissions or 875 00:43:23,824 --> 00:43:27,723 bouncer, Laravel permissions or bouncer, actually. Because we already have... 876 00:43:27,723 --> 00:43:29,723 -Mm-hmm -... a process by which when a user logs 877 00:43:29,723 --> 00:43:34,224 in, we look at all the security groups they're a part of, and we can inspect that 878 00:43:34,224 --> 00:43:36,163 and assign permissions, 879 00:43:36,923 --> 00:43:39,703 uh, it's basically just an array. It's just an array of permissions- 880 00:43:39,703 --> 00:43:41,203 -Yeah -... which would be an enum cast 881 00:43:41,844 --> 00:43:48,703 of, you know, w- of AD groups, AD security groups mapped to named permissions. And 882 00:43:48,703 --> 00:43:50,763 we'll just cast them to an enum on that user and that's it. 883 00:43:50,763 --> 00:43:52,303 -Yeah. -There's no, there's no need for, like, 884 00:43:52,303 --> 00:43:52,704 -this one- -Yeah, I think- 885 00:43:52,704 --> 00:43:55,563 ... to many whatever, because we're not gonna do roles inside of the application. 886 00:43:56,763 --> 00:43:59,824 Right. Yeah. I think if, if the permissions for your application are 887 00:43:59,824 --> 00:44:02,743 coming from something like Active Directory, then there's, there's no need 888 00:44:02,743 --> 00:44:03,023 to 889 00:44:03,664 --> 00:44:05,723 -layer the package on top. -Agreed. 890 00:44:05,723 --> 00:44:10,604 As long as you've got some way of translating those things into... You know, 891 00:44:10,604 --> 00:44:13,843 I mean, you could d- dynamically register policies or whatever else, or, or gates 892 00:44:13,843 --> 00:44:14,944 -and things like that- -Mm-hmm 893 00:44:14,944 --> 00:44:18,984 ... based on this. And then, whether you cache that, you know, for 894 00:44:19,864 --> 00:44:22,423 24 hours, do you cache that just for the request, like do you use- 895 00:44:22,423 --> 00:44:24,143 -It's... Yeah, just for the session -... it once or whatever? 896 00:44:24,143 --> 00:44:24,544 -Yeah, it's just... Yep. -Yeah. 897 00:44:24,544 --> 00:44:28,463 Yeah, and when they log in again, it does the check again. So it, it goes and talks 898 00:44:28,463 --> 00:44:31,483 to AD and says give me the list of, uh, security groups they have. 899 00:44:31,483 --> 00:44:31,663 -So you're not- -Yeah. 900 00:44:33,044 --> 00:44:37,044 So how are you, how are you dealing with, like, changing in permissions if, if 901 00:44:37,044 --> 00:44:38,284 -someone like- -Doesn't log in? 902 00:44:38,284 --> 00:44:41,264 -... has a permission unassigned- -Yeah, right 903 00:44:41,264 --> 00:44:44,643 -... while, like, during a session? -This is a good question. And, and this is- 904 00:44:44,643 --> 00:44:45,063 Are you- 905 00:44:45,063 --> 00:44:48,163 I don't have a good solution to this. This is a good, this is a good question to 906 00:44:48,163 --> 00:44:48,623 ask. 907 00:44:49,443 --> 00:44:52,303 So, wh- what I will say is like right now, and the way that they've had to do it, 908 00:44:52,303 --> 00:44:54,583 like if they've had to add a permission is they'll add the permission and then 909 00:44:54,583 --> 00:44:56,223 they'll ask the user to sign out and sign back in, 910 00:44:56,903 --> 00:44:59,323 right? They sign out, they sign back in, when they sign back in- 911 00:44:59,323 --> 00:44:59,903 -Yeah. Yeah, adding, adding is fine. -Yep. 912 00:44:59,903 --> 00:45:02,363 Because someone, because someone wants that, I want extra things- 913 00:45:02,363 --> 00:45:04,123 -Yes -... yeah, I'll do, do the work to sign out 914 00:45:04,123 --> 00:45:05,763 -and sign back in. -Exactly. Now, the question is- 915 00:45:05,763 --> 00:45:07,283 -But if you are having some permission- -... do we revoke that? 916 00:45:07,283 --> 00:45:08,523 -... revoked. -Yeah. Yeah. 917 00:45:08,523 --> 00:45:10,223 -Yeah. -Now, the way that we've got it set up 918 00:45:10,223 --> 00:45:11,703 -right now- -Or, or if, or if it's a lease that it 919 00:45:11,703 --> 00:45:12,323 -expires- -Yeah 920 00:45:12,323 --> 00:45:14,823 ... like it's gonna have to log you out somehow. 921 00:45:14,823 --> 00:45:18,363 Yeah, so the way that we do it right now is, yeah, the thought is that we expire 922 00:45:18,363 --> 00:45:23,003 the lease at like 6:00 AM. So at 6:00 AM on that day we say it should expire this 923 00:45:23,003 --> 00:45:25,803 day, we revoke it. And if they haven't logged in that day, which it's very 924 00:45:25,803 --> 00:45:28,783 unlikely that they have, then when they log in that day- 925 00:45:29,423 --> 00:45:31,363 -Mm-hmm -... the permission will be revoked. Now, 926 00:45:31,363 --> 00:45:35,683 in some weird case where we needed to revoke a permission for somebody 927 00:45:37,083 --> 00:45:40,523 in the middle of the day, which I, I don't really see that happening. We don't 928 00:45:40,523 --> 00:45:45,763 typically get requests to take permissions away. We get plenty of requests to add 929 00:45:45,763 --> 00:45:50,003 permissions, but almost never. The only case I can think of where we say like we 930 00:45:50,003 --> 00:45:52,263 would revoke permissions would be when somebody's getting terminated. 931 00:45:52,923 --> 00:45:54,383 -You know, that happens. -Mm-hmm. 932 00:45:54,383 --> 00:45:56,463 -But typically the way that that works is- -Yeah 933 00:45:56,463 --> 00:45:59,003 ... a manager will set a time to say, "Hey, at 1:00 we're gonna have the 934 00:45:59,003 --> 00:46:02,943 conversation with this person, we need to terminate this user at 1:00." And so 935 00:46:02,943 --> 00:46:06,283 they'll pull them in, the IT team schedules the termination for 1:00, they 936 00:46:06,283 --> 00:46:09,383 then revoke that user's access and then by the time they get back to their machine, 937 00:46:09,383 --> 00:46:12,143 it's locked and they can't get logged back in and it's fine. So- 938 00:46:12,143 --> 00:46:12,383 Yeah. 939 00:46:13,063 --> 00:46:17,263 I don't... It's, it's a, it's an interesting question to posit but I'm not 940 00:46:17,263 --> 00:46:17,703 sure 941 00:46:18,483 --> 00:46:23,483 that it's a critical component of what I'm hoping to accomplish. I, I don't- 942 00:46:23,483 --> 00:46:24,723 -Yeah. -I don't know. 943 00:46:26,083 --> 00:46:30,703 Yeah. And, and I assume in an organization like yours you'd have a risk register 944 00:46:30,703 --> 00:46:34,103 somewhere, and these are the kind of questions that I sit there and I come up 945 00:46:34,103 --> 00:46:37,583 with and I send it to the risk team, and they put it in the risk register and we 946 00:46:37,583 --> 00:46:39,283 say, "Okay, we know about this but we don't care about it." 947 00:46:39,283 --> 00:46:41,443 -Yeah, exactly. -And as long as it's in the risk register- 948 00:46:42,063 --> 00:46:44,263 -Yes -... you know, it has been raised, it is, 949 00:46:44,263 --> 00:46:47,043 you know, we've decided that it's not something that we're terribly concerned 950 00:46:47,043 --> 00:46:50,223 -with, fine, but it's been noted. -Exactly. We mark it as an acceptable risk. 951 00:46:50,223 --> 00:46:50,903 And it's better to have something on the 952 00:46:50,903 --> 00:46:52,063 -risk register- -Yes. 953 00:46:52,063 --> 00:46:53,723 Yeah, right, yeah, yeah. And it's better, 954 00:46:54,343 --> 00:46:58,663 for those of you listening who are in, in smaller organizations or you're, you know, 955 00:46:58,663 --> 00:46:59,883 on your own or whatever, 956 00:47:00,523 --> 00:47:03,103 it's probably fine, you don't have to worry about it. But in, in big 957 00:47:03,103 --> 00:47:09,183 organizations especially those that are, you know, ISO 27001 or their SOC 1, SOC 2, 958 00:47:09,803 --> 00:47:13,663 whatever else, these are the kinds of things that it's, it is okay 959 00:47:14,343 --> 00:47:19,743 to have these kinds of things sat on a risk register and you just say, "That's a 960 00:47:19,743 --> 00:47:23,903 low risk, medium risk, it's acceptable," you know, we don't care about it but we, 961 00:47:23,903 --> 00:47:25,883 b- but you still need to think about these kinds of things. 962 00:47:25,883 --> 00:47:28,563 -Absolutely. -And then what you do with it is you just, 963 00:47:28,563 --> 00:47:33,003 you decide, is it something that I need to, to put into code to protect against? 964 00:47:33,003 --> 00:47:36,643 Or, is it okay to just, just to acknowledge that yes, that is something 965 00:47:36,643 --> 00:47:40,383 that we are aware of, but we're not worried about it being an actual concern? 966 00:47:40,383 --> 00:47:44,903 Yeah. I- so the two words that we typically use in those instances is that 967 00:47:44,903 --> 00:47:48,563 we would say number one, it's a known, it's a known risk but it's a, 968 00:47:49,303 --> 00:47:50,043 it's A, 969 00:47:50,663 --> 00:47:54,843 it is an acceptable risk, and B, here is a compensating control. 970 00:47:55,703 --> 00:48:01,123 Auditors love that phrase, a compensating control which just means we're aware of 971 00:48:01,123 --> 00:48:04,443 this issue but we're solving it in a different way. So we would say the 972 00:48:04,443 --> 00:48:09,963 compensating control is referenced user termination policy line 15, right? Where 973 00:48:09,963 --> 00:48:15,043 it says, uh, you know, all user terminations will happen within 15 minutes 974 00:48:15,043 --> 00:48:18,963 of a termination request or at the scheduled time requested by the manager. 975 00:48:18,963 --> 00:48:22,463 And then you, you know, you basically reference, hey, here's the pla- place 976 00:48:22,463 --> 00:48:25,943 where we say this is how we do it and this is why it's not a concern. That the 977 00:48:25,943 --> 00:48:31,743 application handles it because our process handles it this way. Um, and so anyway, 978 00:48:31,743 --> 00:48:35,303 those, those are good points to bring up, especially when you're trying to do those 979 00:48:35,303 --> 00:48:39,003 things, SOC 1, SOC 2. If an auditor brings that up and you don't have a solution for 980 00:48:39,003 --> 00:48:43,983 it like in code, i- if you have a solution for it in policy, um, then that's 981 00:48:43,983 --> 00:48:45,643 usually good enough, so... 982 00:48:46,383 --> 00:48:47,403 Yeah. Yeah. 983 00:48:48,183 --> 00:48:49,603 -Well folks, that's all I've got. -Cool. 984 00:48:49,603 --> 00:48:52,663 Michael, you got any... Uh, thanks for your help on that. I, I appreciate you 985 00:48:52,663 --> 00:48:54,383 thinking through that with me. Um, 986 00:48:55,163 --> 00:48:59,083 I think we're gonna move forward with that and I'll let you know kinda how things 987 00:48:59,083 --> 00:49:02,903 go, uh, on that front. But, I think it'll be good. I think it's definitely gonna be 988 00:49:02,903 --> 00:49:05,123 an improvement over what we've been doing. 989 00:49:05,123 --> 00:49:07,143 -Yeah. Yeah, I think so. -Yeah. Yeah. So... 990 00:49:07,143 --> 00:49:07,603 For sure. 991 00:49:08,783 --> 00:49:13,543 All right my friend, Episode 179 of the North Meets South web podcast is in the 992 00:49:13,543 --> 00:49:15,963 books. If you'd like to find show notes for this episode find them at 993 00:49:15,963 --> 00:49:22,223 northmeetsouth.audio/179. If you'd like to talk to us on Twitter, on X, on all the 994 00:49:22,223 --> 00:49:26,903 things, hit us up @michaeldurant, @jacobbennett or @northsouthaudio. And if 995 00:49:26,903 --> 00:49:30,143 you liked the podcast we'd really appreciate it if you'd rate it up in your 996 00:49:30,143 --> 00:49:33,823 podcatcher of choice, five stars would be absolutely incredible. Folks, we hope to 997 00:49:33,823 --> 00:49:38,943 see you at Laracon, please say hello. We would love to talk to you in person. We 998 00:49:38,943 --> 00:49:42,603 don't get to see any of you. Typically, for us this feels like speaking into the 999 00:49:42,603 --> 00:49:46,183 void. It feels like nobody's listening to this ever until we get there and we hear 1000 00:49:46,183 --> 00:49:49,303 from all of you wonderful people. It's an encouragement every year to keep going- 1001 00:49:49,303 --> 00:49:51,703 -Oh -... and keep doing it, because... 1002 00:49:51,703 --> 00:49:55,343 I, I, I enjoy it. I think it's, it's good to know that people do listen but it's 1003 00:49:55,343 --> 00:49:57,683 -also a very bizarre experience. -Mm-hmm. 1004 00:49:57,683 --> 00:50:01,283 Because people know so much about you and you're like, "Hello person." 1005 00:50:01,283 --> 00:50:02,563 Oh, that's so funny. 1006 00:50:03,403 --> 00:50:05,723 -Yeah. -Don't let that deterr- d- don't, don't let 1007 00:50:05,723 --> 00:50:09,043 that deter you from doing it though, I love, love to meet the people. Um, and 1008 00:50:09,043 --> 00:50:12,023 it's been, you know, like I said, six years since I got to meet the people. 1009 00:50:12,023 --> 00:50:14,683 -Absolutely. -So. Except for those of you who are kind 1010 00:50:14,683 --> 00:50:17,203 and caring enough to come all the way down to Laracon AU. 1011 00:50:17,203 --> 00:50:18,883 One of these years I'm gonna get there folks. 1012 00:50:19,503 --> 00:50:20,183 All right everybody. 1013 00:50:21,003 --> 00:50:23,583 Till next time, we'll see you.

Never lose your place, on any device

Create a free account to sync, back up, and get personal recommendations.