Skip to main content

User management

Use User methods to manage the current user's account. You can access the current user reactively with Clerk.userFlow or directly with Clerk.activeUser.

Reload user

val refreshedUser = user.reload()
val updatedUser = user.update {
    username = "janedoe"
    firstName = "Jane"
    lastName = "Doe"
}
val emailAddress = user.createEmailAddress("jane@example.com")
val phoneNumber = user.createPhoneNumber("+15551234567")

Create external account with OAuth

Create an external account with an OAuth provider (e.g., Google, GitHub, see all providers):

when (
    val result =
        user.createExternalAccount(
            User.CreateExternalAccountParams(
                provider = OAuthProvider.GOOGLE,
                redirectUrl = "myapp://callback"
            )
        )
) {
    is ClerkResult.Success -> {
        val externalAccountOAuth = result.value
    }
    is ClerkResult.Failure -> {
        // Handle the failure.
    }
}
val passkey = user.createPasskey()
val totp = user.createTOTP()
val verifiedTotp = user.verifyTOTP(code = "123456")
val deletedTotp = user.disableTOTP()
val backupCodes = user.createBackupCodes()

List Organization invitations

The User.getOrganizationInvitations() companion helper is also available when you don't have a User instance in scope.

when (val result = user.getOrganizationInvitations(limit = 20, offset = 0, status = "pending")) {
    is ClerkResult.Success -> {
        val invitations = result.value.data
    }
    is ClerkResult.Failure -> {
        // Handle the failure.
    }
}
when (val result = user.getOrganizationMemberships(limit = 20, offset = 0)) {
    is ClerkResult.Success -> {
        val memberships = result.value.data
    }
    is ClerkResult.Failure -> {
        // Handle the failure.
    }
}

List Organization suggestions

The User.getOrganizationSuggestions() companion helper is also available when you don't have a User instance in scope.

when (val result = user.getOrganizationSuggestions(statuses = listOf("pending"))) {
    is ClerkResult.Success -> {
        val suggestions = result.value.data
    }
    is ClerkResult.Failure -> {
        // Handle the failure.
    }
}
when (val result = user.getOrganizationCreationDefaults()) {
    is ClerkResult.Success -> {
        val creationDefaults = result.value
    }
    is ClerkResult.Failure -> {
        // Handle the failure.
    }
}
val sessions = user.getSessions()
when (
    val result =
        user.updatePassword(
            User.UpdatePasswordParams(
                currentPassword = "old-password",
                newPassword = "new-password",
                signOutOfOtherSessions = true
            )
        )
) {
    is ClerkResult.Success -> {
        val updatedUser = result.value
    }
    is ClerkResult.Failure -> {
        // Handle the failure.
    }
}
when (val result = user.setProfileImage(file)) {
    is ClerkResult.Success -> {
        val profileImage = result.value
    }
    is ClerkResult.Failure -> {
        // Handle the failure.
    }
}
val deletedProfileImage = user.deleteProfileImage()
val deletedUser = user.delete()

Feedback

What did you think of this content?

Last updated on