diff --git a/apps/studio/components/interfaces/Auth/Users/UserDropdown.tsx b/apps/studio/components/interfaces/Auth/Users/UserDropdown.tsx
index 04cb2cf6257..7912457dd3b 100644
--- a/apps/studio/components/interfaces/Auth/Users/UserDropdown.tsx
+++ b/apps/studio/components/interfaces/Auth/Users/UserDropdown.tsx
@@ -195,7 +195,7 @@ const UserDropdown = ({ user, canRemoveUser, canRemoveMFAFactors }: UserDropdown
disabled={!canRemoveUser}
className="space-x-2"
>
-
+
Delete user
diff --git a/apps/studio/components/interfaces/Auth/Users/Users.tsx b/apps/studio/components/interfaces/Auth/Users/Users.tsx
index 15554149a33..e45d9a2f574 100644
--- a/apps/studio/components/interfaces/Auth/Users/Users.tsx
+++ b/apps/studio/components/interfaces/Auth/Users/Users.tsx
@@ -78,10 +78,10 @@ const Users = () => {
onKeyDown={(e) => {
if (e.keyCode == 13) setFilterKeywords(search)
}}
- className="min-w-[275px]"
+ className="min-w-[300px]"
name="email"
id="email"
- placeholder="Search by email or phone number"
+ placeholder="Search by email, phone number or UID"
icon={}
actions={[
search && (
diff --git a/apps/studio/pages/api/auth/[ref]/users.ts b/apps/studio/pages/api/auth/[ref]/users.ts
index 536b8591808..5acfcfd044c 100644
--- a/apps/studio/pages/api/auth/[ref]/users.ts
+++ b/apps/studio/pages/api/auth/[ref]/users.ts
@@ -35,12 +35,13 @@ const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => {
let queryUsers = ''
if (hasValidKeywords && !hasVerifiedValue) {
- queryCount = SqlString.format('SELECT count(*) from auth.users WHERE email ilike ?;', [
- `%${keywords}%`,
- ])
+ queryCount = SqlString.format(
+ 'SELECT count(*) from auth.users WHERE (email ilike ? OR id::text ilike ?);',
+ [`%${keywords}%`, `%${keywords}%`]
+ )
queryUsers = SqlString.format(
- 'SELECT * from auth.users WHERE email ilike ? ORDER BY created_at DESC LIMIT ? OFFSET ?;',
- [`%${keywords}%`, limitInt, offsetInt]
+ 'SELECT * from auth.users WHERE (email ilike ? OR id::text ilike ?) ORDER BY created_at DESC LIMIT ? OFFSET ?;',
+ [`%${keywords}%`, `%${keywords}%`, limitInt, offsetInt]
)
}
@@ -68,22 +69,22 @@ const handleGetAll = async (req: NextApiRequest, res: NextApiResponse) => {
if (hasValidKeywords && hasVerifiedValue) {
if (verified === 'verified') {
queryCount = SqlString.format(
- 'SELECT count(*) from auth.users WHERE (email_confirmed_at IS NOT NULL or phone_confirmed_at IS NOT NULL) AND email ilike ?;',
- [`%${keywords}%`]
+ 'SELECT count(*) from auth.users WHERE (email_confirmed_at IS NOT NULL or phone_confirmed_at IS NOT NULL) AND (email ilike ? OR id::text ilike ?);',
+ [`%${keywords}%`, `%${keywords}%`]
)
queryUsers = SqlString.format(
- 'SELECT * from auth.users WHERE (email_confirmed_at IS NOT NULL or phone_confirmed_at IS NOT NULL) AND email ilike ? ORDER BY created_at DESC LIMIT ? OFFSET ?;',
- [`%${keywords}%`, limitInt, offsetInt]
+ 'SELECT * from auth.users WHERE (email_confirmed_at IS NOT NULL or phone_confirmed_at IS NOT NULL) AND (email ilike ? OR id::text ilike ?) ORDER BY created_at DESC LIMIT ? OFFSET ?;',
+ [`%${keywords}%`, `%${keywords}%`, limitInt, offsetInt]
)
}
if (verified === 'unverified') {
queryCount = SqlString.format(
- 'SELECT count(*) from auth.users WHERE (email_confirmed_at IS NULL AND phone_confirmed_at IS NULL) AND email ilike ?;',
- [`%${keywords}%`]
+ 'SELECT count(*) from auth.users WHERE (email_confirmed_at IS NULL AND phone_confirmed_at IS NULL) AND (email ilike ? OR id::text ilike ?);',
+ [`%${keywords}%`, `%${keywords}%`]
)
queryUsers = SqlString.format(
- 'SELECT * from auth.users WHERE (email_confirmed_at IS NULL AND phone_confirmed_at IS NULL) AND email ilike ? ORDER BY created_at DESC LIMIT ? OFFSET ?;',
- [`%${keywords}%`, limitInt, offsetInt]
+ 'SELECT * from auth.users WHERE (email_confirmed_at IS NULL AND phone_confirmed_at IS NULL) AND (email ilike ? OR id::text ilike ?) ORDER BY created_at DESC LIMIT ? OFFSET ?;',
+ [`%${keywords}%`, `%${keywords}%`, limitInt, offsetInt]
)
}
}