Lesson Description

The "Introduction" Lesson is part of the full, Permission Systems that Scale course featured in this preview video. Here's what you'd learn in this lesson:

Kyle introduces building scalable permission systems, progressing from naive checks to role-based and attribute-based access control. He clarifies authentication versus authorization and emphasizes making authorization easy to update across the entire codebase.

Preview

Transcript from the "Introduction" Lesson

[00:00:00]
>> Kyle Cook: My name's Kyle. I run the Web Dev Simplified YouTube channel and I did make some videos on permissions, and Marky reached out to me, they said, hey, would you like to make a workshop on this? And I was like, yeah, I'd love to be able to expand this because with YouTube, you can really only go so deep on topics, so this whole workshop is pretty much a massive expansion on really what it looks like to build permission systems that scale past the, you know, small size of things.

[00:00:21]
We're going to be starting out with a relatively simple permission system and we're slowly going to be expanding it through different tiers of permission systems until we kind of get to the end where this permission system can really handle a lot of different things that we throw at it. We want our permission system, when new things come about to be easy for us to modify and not really affect other parts of our code too drastically.

[00:00:41]
So to start, we have what I would call like the naive permission system. When you first start building a project, this is what most of your permission systems look like, it's a bunch of if checks scattered all over the place. Your code probably isn't super clean, it's difficult to modify and maybe has some bugs in it. From there we're going to clean up that particular bit of code, make it a little bit better, make it work better, try to architect it a little bit better, and then we're going to move through different architectures of permission systems.

[00:01:04]
First we're going to be doing something called role-based access control, which you may actually be familiar with since you've probably used roles to handle permissions, you just may not have seen it in this particular way before. Next we'll move on to attribute-based access control, which is essentially the next step up that I think can handle pretty much any large scale permission system. And then we're going to be talking about maybe different libraries you can use that use some of these attribute-based access control systems, so you don't have to write everything from scratch because as you'll see later in this workshop, there are certain things that become difficult to manage when you're writing them on your own, so having a library to handle that can be quite nice.

[00:01:38]
Now for this actual workshop, the format is going to be very heavily focused on live coding. I have some slides like this with some text, but for the most part we'll be spending our time in the code editor actually writing and looking at how this code works because the best way to see how a permission system works is to actually use it and write the code yourself. Because that is what tells you what the developer experience is like, and really this is about making the developer experience as easy as possible while still making the actual user experience work like you expect it to, because as long as your permission system works, that's the important part, but we want to make it enjoyable to work in and easy to refactor and manage.

Learn Straight from the Experts Who Shape the Modern Web

  • 250+
    In-depth Courses
  • Industry Leading Experts
  • 24
    Learning Paths
  • Live Interactive Workshops
Get Unlimited Access Now