Laravel.io
protected static $fillableAttributes = array(
	'email' => array('registration', 'my_account', 'admin_edit'),
	'role' => array('admin_edit'),
	'first_name' => array('registration', 'my_account', 'admin_edit'),
	'last_name' => array('registration', 'my_account', 'admin_edit'),
	'company' => array('registration', 'my_account', 'admin_edit'),
	'address' => array('registration', 'my_account', 'admin_edit'),
	'address2' => array('registration', 'my_account', 'admin_edit'),
	'city' => array('registration', 'my_account', 'admin_edit'),
	'state' => array('registration', 'my_account', 'admin_edit'),
	'zip' => array('registration', 'my_account', 'admin_edit'),
	'phone' => array('registration', 'my_account', 'admin_edit'),
	'approved' => array('admin_edit'),
);

public static function getFillableAttributes($context) {
	$fillableAttributes = array();

	foreach (self::$fillableAttributes as $attr => $attrContexts) {
		if (in_array($context, $attrContexts)) {
			$fillableAttributes[] = $attr;
		}
	}

	return $fillableAttributes;
}

/* =============================================== */

$user = $id == 'new' ? new User : User::find($id);

$validator = Validator::make( Input::all(), $this->validationRules( $id ) );

if ( $validator->passes() ) {
	$user->fill(Input::only(User::getFillableAttributes('admin_edit')));
	$user->save();
}

Please note that all pasted data is publicly available.