Device limitation rule for user
$device = Device::where($params)-&gt;first(); will either return an instance of eloquent or null.

You have if (!$device) {...}else{...}. 

This translates to if the device is not found aka the else part then $device-&gt;is_banned which will results in a trying to get property of non-object fatal error.



if ($condition) {
    return false;
}else{
    return true;
}


The else is not necessary since return will immediately end the execution of the function and return the result.

if ($condition) {
    return false;
}
return true;


Works just the same and I personally find it more visually pleasant.



$this-&gt;isDeviceExistWithUser($user_id,$device_id)

Syntax heavy naming. You could simple call it deviceForUser or something like that. is usually suggests a boolean, as in isDevice, isSmall, isLarge etc etc.



$this-&gt;isDeviceBanned($device_id)

Nitpick but a simple isBanned will do here since you passing in $device_id, clearly a device is the scope here.



isLoginValid2Refactored

Again really heavy name here. It's not something inherently wrong with it, but the lighter the better. Fluent and easy to understand goes a long way.