Laravel; Auth::attempt() works but user not logged in.

This was a funky problem that took me a while to figure out.

When a user was logging in, the Auth::attempt() was returning true if there were good credentials passed. However! Using Auth::check() or any other Auth method showed the user wasn’t actually logged in. What the heck?

After much hunting, I found this answer on Stack Overflow.

The problem is you have used “userId” as your primary id – but you have not told Laravel.

I realized I did NOT use id as the id for the users table, I went with uid because I thought it made more sense. That’s fine, but then you need to tell your Users model what the primary key is by adding this line.

protected $primaryKey = "[your-primary-key-here]";

If you were searching and having this issue, I hope it helped!

Fun fact: increasing the font size of Sublime Text 2 has greatly helped my ability to focus. Apparently trying to work w/font size of 11 isn’t possible anymore with my eyes. Changed to 18 point and it is wonderful.

Laravel; having a conditional choose your @extends template

I am firmly entrenched in the Laravel camp now. One thing I love about Laravel is their blade templating language. However, there is some quirkiness that isn’t immediately obvious.

Let’s say you have a template that is extending another template. You want a conditional to determine which template you want to extend. (The use case here for me is a messaging system. Logic + layout is the same on back-end and front-end, but they extend different templates).

I was trying to get this to work:

@if($var)
@extends('account.base')
@else
@extends('base.base')
@endif

@section('content')

<h1>Here are things!</h1>

@stop

All it was doing was outputting the one @extends(‘base.base’) line. After much hunting, I found this great answer on StackOverflow. So, @extends() must be on the first line of a blade template, which is a little weird, but whatever. Used ternary operator like this and it works!

@extends($var ? 'account.base' : 'base.base')

Time for Reflection

My family just got back from our first vacation in over three years. After us getting married and having two wonderful children it was definitely overdue.

I have had a lot of small revelations about things that I am still processing. As I iron out the details I will be sharing them. Expect posts aplenty!

Just finished the todo list for the next four days, after which we launch a new project that is running on Station, the new CMS package for Laravel we developed. It’s going to be intense, and worth it!