Kevin Bond (@zenstruck) header
Kevin Bond (@zenstruck) profile picture

Open Source, #PHP, #Symfony Developer. Writer @SymfonyCasts, @Symfony Core Member. Author of https://nitter.cf/t.co/MK05b2VaRK packages.

Kitchener, Ontario, Canada
Joined March 2009
Photo by Kevin Bond (@zenstruck)Photo by Kevin Bond (@zenstruck)Photo by Kevin Bond (@zenstruck)Photo by Kevin Bond (@zenstruck)Photo by Kevin Bond (@zenstruck)Photo by Kevin Bond (@zenstruck)Photo by Kevin Bond (@zenstruck)Photo by Kevin Bond (@zenstruck)Photo by Kevin Bond (@zenstruck)
#Symfony: "yours to discover"
1
7
3
83
14,124
AI makes generating code easier. Making sure it works as expected, thatโ€™s where testing comes in. Join Diego's workshop "TDD the Right Way" at SymfonyCon Warsaw next month and put that code to the test! ๐Ÿš€ Join the workshop โ†’ live.symfony.com/2026-warsawโ€ฆ
1
3
333
Super excited about this new Symfony 8.2 feature! Controller attributes like `#[IsCsrfTokenValid]` and `#[RateLimit]` can now pass failures to your controller instead of throwing exceptions. Convenient attributes AND user-friendly feedback! github.com/symfony/symfony/pโ€ฆ
1
5
208
๐Ÿ” Symfony Security: Going Further #13 Login is throttled, but how do we stop a bot from registering 1000's of accounts? Let's configure a rate limiter by hand and put a hard cap on how often someone can sign up! ๐Ÿšฆ symfonycasts.com/screencast/โ€ฆ
1
2
327
๐Ÿ” Symfony Security: Going Further #12 Want stronger passwords - and a way to reject any that have already leaked in a data breach? Symfony ships a constraint for each, and we'll bundle them into one reusable constraint of our own! symfonycasts.com/screencast/โ€ฆ
2
3
306
๐Ÿ” Symfony Security: Going Further #11 Need a change password form? Let's reuse the one the reset password maker already wrote for us, then ask for the current password too - with a very cool built-in constraint! symfonycasts.com/screencast/โ€ฆ
1
2
254
๐Ÿ” Symfony Security: Going Further #10 Need a forgot password flow? There's a maker for that! Let's generate the whole thing, log the user in automatically after a reset, and see how it avoids leaking who has an account! symfonycasts.com/screencast/โ€ฆ
2
3
297
๐Ÿ” Symfony Security: Going Further #9 Let's swap the built-in switch_user role for a custom attribute, let a voter make the call, & see how to check the permissions of any user - not just the one logged in. And, now our admins can't impersonate each other! symfonycasts.com/screencast/โ€ฆ
2
5
297
๐Ÿ” Symfony Security: Going Further #8 Let's give users the choice to log in with their email or username! We'll add unique usernames, update our login form, and teach Symfony how to find users by either one. symfonycasts.com/screencast/โ€ฆ
2
1
293
๐Ÿ” Symfony Security: Going Further #7 After logging in, users should return to the page they were on, not the homepage! Let's use Symfony's _target_path to send them right back where they left off, making the login experience a little smoother! symfonycasts.com/screencast/โ€ฆ
2
5
319
๐Ÿ” Symfony Security: Going Further #6 Need a super admin who can do (almost) anything? Let's build a custom voter that grants sweeping permissions across our app, while making sure important authentication checks still behave normally! symfonycasts.com/screencast/โ€ฆ
2
7
303
๐Ÿ” Symfony Security: Going Further #5 Ever notice how GitHub asks you to confirm your password before sensitive actions? Let's build that same "sudo mode" in Symfony, requiring full authentication with a smooth password confirmation flow! symfonycasts.com/screencast/โ€ฆ
2
5
321
๐Ÿ” Symfony Security: Going Further #4 Wrong password, unknown email, disabled account... your login form answers all three with "Invalid credentials." That's deliberate. Let's decide how much we actually want to give away. symfonycasts.com/screencast/โ€ฆ
2
5
322
Symfony Cache Contracts have a sneaky little trick ๐Ÿ‘€ Use `beta: INF` to force-refresh a cached value without deleting the old one first - so other requests can keep using it while the fresh value is computed. See how it works ๐Ÿ‘‡ symfonycasts.com/blog/symfonโ€ฆ
1
3
6
424
๐Ÿ” Symfony Security: Going Further #3 Disabling an account blocks the next login... but a user already browsing doesn't even notice. Let's show them the door mid-click. ๐Ÿ‘‹ symfonycasts.com/screencast/โ€ฆ
2
4
322
๐Ÿš€ New on the blog: our ideal GitHub Actions setup for Symfony apps! Tests, linting, PHPStan, code style, database/schema checks, Symfony-aware diagnostics, asset compilation, plus a scheduled Composer security audit. A solid CI baseline you can actually build from: symfonycasts.com/blog/ideal-โ€ฆ
4
6
387
๐Ÿšจ New Course ๐Ÿšจ ๐Ÿ” Symfony Security: Going Further #1 A 403 status code tells us we don't have access... but it also tells us the thing exists. Let's borrow the trick GitHub uses on private repositories ๐Ÿ–– symfonycasts.com/screencast/โ€ฆ
1
3
298