> ## Documentation Index
> Fetch the complete documentation index at: https://docs.megaport.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Adding and Modifying Users

> This help topic describes how to manage users for your Megaport Portal account.

export const Video = ({url, text, duration, description}) => {
  const errorPrefix = '\x1b[31;1;4mERROR\x1b[0m: Video -';
  if (typeof url !== 'string') {
    url = String(url);
  }
  if (typeof text !== 'string') {
    text = String(text);
  }
  if (!url || url === 'undefined') {
    console.error(`${errorPrefix} the \`url\` property is required — rendering an empty string instead`);
    return <></>;
  }
  if (!text || text === 'undefined') {
    console.error(`${errorPrefix} the \`text\` property is required — rendering an empty string instead`);
    return <></>;
  }
  const youtubeIconMask = "url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3Cpath d='M549.7 124.1c-6.3-23.7-24.8-42.3-48.3-48.6C458.8 64 288 64 288 64S117.2 64 74.6 75.5c-23.5 6.3-42 24.9-48.3 48.6-11.4 42.9-11.4 132.3-11.4 132.3s0 89.4 11.4 132.3c6.3 23.7 24.8 41.5 48.3 47.8C117.2 448 288 448 288 448s170.8 0 213.4-11.5c23.5-6.3 42-24.2 48.3-47.8 11.4-42.9 11.4-132.3 11.4-132.3s0-89.4-11.4-132.3zM232 336V176l142.7 80z'/%3E%3C/svg%3E\")";
  return <div className="video-callout">
      <div className="callout my-4 flex gap-3 overflow-hidden rounded-2xl border px-5 py-4">
        <div className="mt-0.5 w-4 shrink-0" data-component-part="callout-icon">
          <svg aria-hidden="true" className="size-4 shrink-0" style={{
    WebkitMaskImage: youtubeIconMask,
    maskImage: youtubeIconMask,
    WebkitMaskRepeat: 'no-repeat',
    maskRepeat: 'no-repeat',
    WebkitMaskPosition: 'center',
    maskPosition: 'center',
    backgroundColor: '#0284c7'
  }} />
        </div>
        <div className="min-w-0 w-full text-sm" data-component-part="callout-content">
          <strong>
            Video:{' '}
            <a href={url} target="_blank" rel="noopener noreferrer">
              {text}
              <span className="sr-only"> (opens in a new tab)</span>
            </a>
          </strong>
          {}
          {duration && <> ({duration})</>}
          {}
          {description && <p className="mt-1 mb-0 text-xs text-gray-500 dark:text-gray-400">
              {description}
            </p>}
        </div>
      </div>
    </div>;
};

export const Image = ({src, alt = '', caption, width, height, shadow}) => {
  const errorPrefix = '\x1b[31;1;4mERROR\x1b[0m: Image -';
  if (typeof src !== 'string') {
    src = String(src);
  }
  if (!src || src === 'undefined') {
    console.error(`${errorPrefix} \`src\` is required — rendering an empty string instead`);
    return <></>;
  }
  const img = <img className={['mega-image-style', shadow ? 'shadow' : ''].join(' ')} src={src} alt={alt} width={width} height={height} style={{
    display: 'block'
  }} />;
  return caption ? <figure>
      {img}
      <figcaption style={{
    textAlign: 'center',
    width
  }}>{caption}</figcaption>
    </figure> : img;
};

export const InlineImage = ({src, alt, height = 16, shadow, width}) => {
  const errorPrefix = '\x1b[31;1;4mERROR\x1b[0m: InlineImage -';
  if (typeof src !== 'string') {
    src = String(src);
  }
  if (!src || src === 'undefined') {
    console.error(`${errorPrefix} \`src\` is required — rendering an empty string instead`);
    return <></>;
  }
  if (typeof alt !== 'string') {
    alt = String(alt);
  }
  if (alt === 'undefined') {
    console.error(`${errorPrefix} \`alt\` is required (use "" for decorative images) — rendering an empty string instead`);
    return <></>;
  }
  if (height) {
    height = height.toString().replaceAll(/\D/g, '');
  }
  if (width) {
    width = width.toString().replaceAll(/\D/g, '');
  }
  return <img className={['inline-icon', shadow ? 'shadow' : null, 'm-0'].filter(Boolean).join(' ')} src={src} alt={alt} height={height} width={width} style={{
    display: 'inline',
    verticalAlign: 'middle',
    maxHeight: height ? `${height}px` : undefined,
    maxWidth: width ? `${width}px` : undefined,
    height: height ? `${height}px` : undefined,
    width: width ? `${width}px` : undefined
  }} />;
};

export const Link = ({href, children}) => {
  const errorPrefix = '\x1b[31;1;4mERROR\x1b[0m: Link -';
  if (typeof href !== 'string') {
    href = String(href);
  }
  if (!href || href === 'undefined') {
    console.error(`${errorPrefix} the \`href\` property is required — rendering an empty string instead`);
    return <></>;
  }
  if (href.includes('{') || href.toUpperCase().includes('%7B')) {
    console.error(`${errorPrefix} could not resolve a variable in href "${href}" — rendering an empty string instead`);
    return <></>;
  }
  const isExternal = (/^https?:\/\//).test(href);
  return <a href={href} className="link" target={isExternal ? '_blank' : undefined} rel={isExternal ? 'noreferrer' : undefined}>
      {children ?? href}
      {isExternal && <span className="sr-only"> (opens in a new tab)</span>}
    </a>;
};

If you are a Company Admin for the Megaport Portal, you can create and edit Portal users, assign roles, activate/deactivate users, and reset Multi-Factor Authentication (MFA) per user. Creating a new user will send the user an email, inviting them to join your Megaport Portal account. For more information, see [Inviting Users to Your Account](/setting-up/inviting-users).

<Video url="https://youtu.be/wn1TBffeHFA" text="Adding and Modifying Users in the Megaport Portal" duration="7:33" description="This video shows how to add users, assign roles, edit user profiles, and activate or deactivate user accounts in the Megaport Portal." />

## Adding users

You can add new users who will be invited to your account. The maximum number of users you can add per account is 100.

**To create a new user**

1. Visit the <Link href="https://portal.megaport.com">Megaport Portal</Link> and log in.

2. Choose Company > Users.

3. Click **New User**.\
   Complete all fields, including name, email, phone number, and role.

   <Image src="/images/portal-admin/user-management/add-new-user-in-the-portal.png" alt="New User" shadow={true} width={800} />

   The user email address is required for registration. It becomes the username for logging in to the Megaport Portal and will receive notifications from the system. The role determines what actions the user can perform in the Megaport Portal and their access permissions. For more information about user roles, see [Managing User Roles](/portal-admin/user-management/roles).

   <Note>
     * An email address cannot be used more than once and cannot be from a free email domain (such as Gmail, Yahoo, or Outlook).
     * When SSO is enabled (an IdP connection has been created), and the email domain is associated with SSO, the user will be sent an email containing a link that must be clicked to confirm the user for the account. If the email domain is not associated with SSO, the standard invite email will be sent with a temporary password for logging in. Users from other domains can be added, however, a pop-up message will show during creation warning that the user won’t be able to log in unless they are a Company Admin. For more information, see [Setting up Single Sign-On](/setting-up/enforcing-sso).
   </Note>

4. Click **Save**.\
   When you create a new user, the user is sent an email with instructions for logging in or confirming the user account. For more information, see [Inviting Users to Your Account](/setting-up/inviting-users).

## Modifying existing users

For existing users, you can edit the user profile, and activate and deactivate user access. This allows you to maintain accurate user details, ensure users are assigned to the appropriate roles, and suspend user access to the Megaport Portal.

<Note>
  * You cannot change the user's email address.
  * When SSO is enforced and the user is in an *Inactive* state, if you are re-activating the user account and it is not associated with an SSO domain, the user will be blocked and unable to log in. Make sure that the user's email domain is associated with an SSO domain. As an exception, if the user is a Company Admin, they will be able to access their account even if they are not associated with an SSO domain. For more information, see [Setting up Single Sign-On](/setting-up/enforcing-sso).
</Note>

**To modify an existing user**

1. From the Manage Users page, find the user to modify.\
   You can use the filter at the top of the page to quickly find the user by name.
2. Click <InlineImage src="/images/portal-admin/user-management/edit-user-icon.png" alt="Edit user profile" height={30} />(Edit) for the required user.
3. Make the changes to the user account then click **Save**.
