Users

Identity

Amity SDK's do not store or manage any user data. This means that you do not have to import or migrate existing user profiles into the system, user management should be handled by your application code. Instead, every user is simply represented by a unique userID, which can be any string that uniquely identifies the user and is immutable throughout its lifetime.

A database primary key would make an ideal userID. Conversely, something like username or emails is not recommended as those values may change overtime.

If you wish to assign additional permissions for a user, for example moderation privileges or different sending limits, you can provide an array of roles to assign to this user. Roles are defined in the admin panel and can be tied to an unlimited number of users. Once again, Amity does not store or manage any user data, which means you do not have to import or migrate existing users into the system. It also means that Amity cannot provide user management functionalities like lists of users, or limit actions of certain users (e.g. user permissions). Instead, these functionalities should be handled by the rest of your application's capabilities and your server.

Descriptions of Users

Name

Data Type

Description

Attributes

userId

string

The id of this user

roles

Array.<string>

A list of user's roles

displayName

string

The display name of the user

flagCount

integer

The number of users that have flagged this user

metadata

Object

The metadata of the user

hashFlag

Object

A hash for checking internally if this user was flagged by the user

createdAt

date

The date/time the user was created at

updatedAt

date

The date/time the user was updated at

Though the SDK does not store and should not be responsible for the handling User profile data for your application; We do provide tools to make some surface-level queries and searches for existing user accounts. With the help of our EkoUserRepository class, you would be able to list all the users, search for list of users whose display name matches your search query and get EkoUser object from user id.

All User methods are contained in a UserRepository class. Before calling any User methods, you must first instantiate a repository instance.

import { UserRepository } from 'eko-sdk';
const userRepo = new UserRepository();

Get a User

The User Repository provides a method to get a single user, which will be returned as a LiveObject:

userRepo.userForId('user123')

Get All Users

The User Repository provides a method to get a list of all users, which will be returned as a LiveCollection:

userRepo.getAllUsers()

This method takes an optional sortBy parameter which must be a EkoUserSortingMethod - these include displayName, firstCreated, and lastCreated:

import { EkoUserSortingMethod } from 'eko-sdk'

userRepo.getAllUsers(EkoUserSortingMethod.DisplayName)

Search for Users

The User Repository provides a method to search for users by their display name. The result of this search is returned as a LiveCollection.

userRepo.searchUserByDisplayName('Test User 1')

The above example searches for all users whose display names start with "Test User 1". Note that the search is case sensitive.

To flag a user, call the following method:

userRepo.flag({ userId: 'user123' })

To unflag a user, call the following method:

userRepo.unflag({ userId: 'user123' })

Both of these methods return a promise meaning they can be chained with .then and .catch handlers:

userRepo.flag({ userId: 'user123' })
    .then(() => {})
    .catch(() => {})

Last updated