Yo lo veo bien. Yo crearía algunos métodos protegidos en el controlador para validar y otro para crear el usuario. Por ejemplo:
Código PHP:
$this->validarRegistro();
$this->crearUsuario();
Y esto:
Código PHP:
$user = Usuario::where('nombre', '=', $usuario)->orWhere('correo','=',$email)->first();
if (is_null($user))
Lo sustituiría por:
Código PHP:
if ( ! Usuario::existe($nombre, $email))
Obviamente tienes que crear el metodo existe en el modelo.