# User and OrgMemberInfo

## [User Object](https://docs.propelauth.com/reference/fullstack-apis/nextjspages/user-orgmemberinfo#user-object)

The `UserFromToken` object contains information about the user and the organizations they are a member of. It also has helper functions for checking org membership, roles, and permissions.

### Properties

- Name `userId` Type string Description  
  The user's unique ID

- Name `email` Type string Description  
  The user's email address

- Name `username` Type string | undefined Description  
  The user's username

- Name `firstName` Type string | undefined Description  
  The user's first name

- Name `lastName` Type string | undefined Description  
  The user's last name

- Name `legacyUserId` Type string | undefined Description  
  The user's legacy user ID. This is only set if you migrated from an external source. See [Migrating Users](https://docs.propelauth.com/migrations) for more information.

- Name `canCreateOrgs` Type boolean Description  
  Whether the user can create organizations

- Name `createdAt` Type number Description  
  The timestamp of when the user was created

- Name `emailConfirmed` Type boolean Description  
  If the user has confirmed their email

- Name `hasPassword` Type boolean Description  
  If the user has set a password to login

- Name `lastActiveAt` Type number Description  
  The timestamp of when the user was last active

- Name `mfaEnabled` Type boolean Description  
  Whether the user has enabled MFA

- Name `updatePasswordRequired` Type boolean Description  
  Whether the user is required to update their password

- Name `impersonatorUserId` Type string | undefined Description  
  If the user is being impersonated, this is the ID of the impersonator. See [User Impersonation](https://docs.propelauth.com/overview/user-management/user-impersonation) for more information.

- Name `properties` Type object | undefined Description  
  Additional properties set on the user. See [User Properties](https://docs.propelauth.com/overview/user-management/user-properties) for more information.

- Name `loginMethod` Type object Description  
  The method the user used to log in. Returns the [Login Method Property object](https://docs.propelauth.com/overview/authentication/login-methods).

- Name `activeOrgId` Type string | undefined Description  
  The ID of the org set by the setActiveOrg function returned in the [useUser hook](https://docs.propelauth.com/reference/fullstack-apis/nextjspages/client-component-hooks#use-user).

- Name `getOrg` Type (orgId: string) => OrgMemberInfo | undefined Description  
  Returns the [OrgMemberInfo](https://docs.propelauth.com/reference/fullstack-apis/nextjspages/user-orgmemberinfo#org-member-info-object) for the given org ID

- Name `getOrgByName` Type (orgName: string) => OrgMemberInfo | undefined Description  
  Returns the [OrgMemberInfo](https://docs.propelauth.com/reference/fullstack-apis/nextjspages/user-orgmemberinfo#org-member-info-object) for the given org name

- Name `getOrgs` Type () => OrgMemberInfo[] Description  
  Returns all orgs that the user is a member of

- Name `isImpersonating` Type () => boolean Description  
  Whether the current user is being impersonated by someone else. See [User Impersonation](https://docs.propelauth.com/overview/user-management/user-impersonation) for more information.

- Name `getActiveOrgId` Type () => string | undefined Description  
  Returns the ID of the org set by the setActiveOrg function returned in the [useUser hook](https://docs.propelauth.com/reference/fullstack-apis/nextjspages/client-component-hooks#use-user).

- Name `getActiveOrg` Type () => OrgMemberInfo Description  
  Returns the [OrgMemberInfo](https://docs.propelauth.com/reference/fullstack-apis/nextjspages/user-orgmemberinfo#org-member-info-object) of the org set by the setActiveOrg function returned in the [useUser hook](https://docs.propelauth.com/reference/fullstack-apis/nextjspages/client-component-hooks#use-user).

```js
export async function getServerSideProps(context) {
    const user = await getUserFromServerSideProps(context)

if (!user) {
        return { redirect: { destination: '/api/auth/login' } }
    }

// this can be from anywhere
    const orgId = getOrgIdFromContext(context)
    const isAdmin = user.getOrg(orgId)?.isRole("Admin")

if (!isAdmin) {
        return { redirect: { destination: '/somewhere-else' } }
    }

return {
        props: {},
    }
}
```

## [OrgMemberInfo Object](https://docs.propelauth.com/reference/fullstack-apis/nextjspages/user-orgmemberinfo#org-member-info-object)

Contains information about the user's membership in an organization, such as their role and permissions. It's returned by the [User](https://docs.propelauth.com/reference/fullstack-apis/nextjspages/user-orgmemberinfo#user-object) object's **getOrg**, **getOrgByName**, and **getOrgs** functions.

### Properties

- Name `orgId` Type string Description  
  The ID of the organization

- Name `orgName` Type string Description  
  The name of the organization

- Name `urlSafeOrgName` Type string Description  
  The URL-safe name of the organization

- Name `userAssignedRole` Type string Description  
  The role of the user within this organization

- Name `userPermissions` Type string[] Description  
  The permissions of the user within this organization

- Name `orgMetadata` Type object Description  
  A JSON blob of the org's metadata

- Name `userInheritedRolesPlusCurrentRole` Type object Description  
  The role of the user within this organization plus each inherited role

- Name `isRole` Type (role: string) => boolean Description  
  Whether the user has the given role in this organization

- Name `isAtLeastRole` Type (role: string) => boolean Description  
  Whether the user has at least the given role in this organization

- Name `hasPermission` Type (permission: string) => boolean Description  
  Whether the user has the given permission in this organization

- Name `hasAllPermissions` Type (permissions: string[]) => boolean Description  
  Whether the user has all the given permissions in this organization

- Name `orgRoleStructure` Type string Description  
  The role structure set for your project. See [multi roles per user](https://docs.propelauth.com/overview/authorization/managing-roles-permissions#multiple-roles-per-user) for more information.

- Name `userAssignedAdditionalRoles` Type string[] Description  
  If using multiple roles per user, returns an array of roles that the user belongs to. Excludes the `userAssignedRole`.

```js
const org = user.getOrg("my-org-id")
const isAdmin = org?.isRole("Admin")
if (isAdmin) {
    console.log("User is an admin in", org.orgName)
}
```
