# User and OrgMemberInfo

## [User Object](https://docs.propelauth.com/reference/fullstack-apis/nextjsapp/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/nextjsapp/client-component-hooks#use-user).  
- Name `getOrg` Type (orgId: string) => OrgMemberInfo | undefined  
  Description: Returns the [OrgMemberInfo](https://docs.propelauth.com/reference/fullstack-apis/nextjsapp/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/nextjsapp/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/nextjsapp/client-component-hooks#use-user).  
- Name `getActiveOrg` Type () => OrgMemberInfo  
  Description: Returns the [OrgMemberInfo](https://docs.propelauth.com/reference/fullstack-apis/nextjsapp/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/nextjsapp/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/nextjsapp/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/nextjsapp/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)
}
```
