# User object within controller

**URL:** <https://forum.getkirby.com/t/user-object-within-controller/5898>\
**Category:** Questions\
**Tags:** v2\
**Created:** [November 29, 2016, 10:02pm UTC](https://forum.getkirby.com/t/user-object-within-controller/5898 "2016-11-29T22:02:07Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![bnomei](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.getkirby.com/bnomei/32/775_2.png) [@bnomei](https://forum.getkirby.com/u/bnomei)\
**Post date:** [November 29, 2016, 10:02pm UTC](https://forum.getkirby.com/t/user-object-within-controller/5898/1 "2016-11-29T22:02:07Z")

</div>

i had an issue with kirby 2.4.0 where the `$site->user()` object was not valid within my controller but `$site->users()->current()` was. any idea how that could happen? i thought they would be the same?

---

<div class="post-metadata">

**Author:** ![bnomei](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.getkirby.com/bnomei/32/775_2.png) [@bnomei](https://forum.getkirby.com/u/bnomei)\
**Post date:** [December 7, 2016, 8:49am UTC](https://forum.getkirby.com/t/user-object-within-controller/5898/2 "2016-12-07T08:49:29Z")

</div>

i found out that the `$site->users()->current()` points to the first user not the current. how can that be?

```
return function($site, $pages, $page) {
    $userR = site()->user(); // using site() function
    echo 'panel login --> '.$userR->email().'<br>';
    $userC = $site->users()->current(); // using var $site
    echo 'why first user account ? --> '.$userC->email();
    return compact();
}
```

---

<div class="post-metadata">

**Author:** ![texnixe](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.getkirby.com/texnixe/32/5754_2.png) [@texnixe](https://forum.getkirby.com/u/texnixe)\
**Post date:** [December 7, 2016, 9:14am UTC](https://forum.getkirby.com/t/user-object-within-controller/5898/3 "2016-12-07T09:14:00Z")

</div>

`$site->user()->current()` would return the currently logged in user, not `$site-\>users()-\>current().

---

<div class="post-metadata">

**Author:** ![bnomei](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.getkirby.com/bnomei/32/775_2.png) [@bnomei](https://forum.getkirby.com/u/bnomei)\
**Post date:** [December 7, 2016, 9:27am UTC](https://forum.getkirby.com/t/user-object-within-controller/5898/4 "2016-12-07T09:27:36Z")

</div>

i see. a typo. but why does `$site->users()->current()` not fail but return first user if function does not exists?

---

<div class="post-metadata">

**Author:** ![texnixe](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.getkirby.com/texnixe/32/5754_2.png) [@texnixe](https://forum.getkirby.com/u/texnixe)\
**Post date:** [December 7, 2016, 9:29am UTC](https://forum.getkirby.com/t/user-object-within-controller/5898/5 "2016-12-07T09:29:52Z")

</div>

The `users` class inherits the `current()`method from the `iterator` class via the `collection` class. It just returns the current element of the array, but not the currently logged in user.

---

<div class="post-metadata">

**Author:** ![bnomei](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.getkirby.com/bnomei/32/775_2.png) [@bnomei](https://forum.getkirby.com/u/bnomei)\
**Post date:** [December 7, 2016, 9:40am UTC](https://forum.getkirby.com/t/user-object-within-controller/5898/6 "2016-12-07T09:40:50Z")

</div>

ah. thx for explaining.

---

<div class="post-metadata">

**Author:** ![distantnative](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.getkirby.com/distantnative/32/11319_2.png) [@distantnative](https://forum.getkirby.com/u/distantnative)\
**Post date:** [February 6, 2025, 4:53pm UTC](https://forum.getkirby.com/t/user-object-within-controller/5898/7 "2025-02-06T16:53:13Z")

</div>

Archived on February 6, 2025, 4:53pm UTC


