- $roles = Role::query()->where(function (Builder $query) use ($groupNames) {
- $query->whereIn('name', $groupNames);
- foreach ($groupNames as $groupName) {
- $query->orWhere('external_auth_id', 'LIKE', '%' . $groupName . '%');
- }
- })->get();
-
- $matchedRoles = $roles->filter(function (Role $role) use ($groupNames) {
- return $this->roleMatchesGroupNames($role, $groupNames);
- });
-
- return $matchedRoles->pluck('id');
- }
-
- /**
- * Check a role against an array of group names to see if it matches.
- * Checked against role 'external_auth_id' if set otherwise the name of the role.
- * @param \BookStack\Auth\Role $role
- * @param array $groupNames
- * @return bool
- */
- protected function roleMatchesGroupNames(Role $role, array $groupNames)
- {
- if ($role->external_auth_id) {
- $externalAuthIds = explode(',', strtolower($role->external_auth_id));
- foreach ($externalAuthIds as $externalAuthId) {
- if (in_array(trim($externalAuthId), $groupNames)) {
- return true;
- }
- }
- return false;
+ try {
+ $imageData = $ldapUserDetails['avatar'];
+ $this->userAvatars->assignToUserFromExistingData($user, $imageData, 'jpg');
+ } catch (\Exception $exception) {
+ Log::info("Failed to use avatar image from LDAP data for user id {$user->id}");