Skip to content

1.3 Members and Organizational Structure

Informat adopts a multi-tenant architecture, and users in the system are divided into three types: System Account (Account), Team Member (CompanyMember), and Application Member (User). System accounts are added through registration or the admin backend. Each Account can join multiple teams as a CompanyMember, and each CompanyMember can join multiple Applications as a User within the team. Each team member can belong to one or more Departments (Dept), and there are parent-child relationships between departments. Each department can have one or more CompanyMembers as department heads.

User Structure

1.3.1 System Account

System accounts come from the following sources:

  • Self-registration by users
  • Addition by system administrators through the backend
  • Addition by calling the informat.system.addAccount() function in scripts

In the admin backend, operations such as disabling all accounts in the system and forcing password changes can be performed. A system account is only a credential for logging into Informat. Without joining a team, no operations can be performed after logging into the system.

1.3.2 Team Member

A system account can join multiple teams. In each team, a CompanyMember is assigned different Team Roles. Team roles are associated with their operable permissions, and team members can have multiple roles. For information on role permissions, please refer to Role Permissions. Each team has two default roles:

  • Admin: Has all permissions and can design applications
  • Member: Only has permission to use applications

When joining a team, the Department (Dept) to which the team member belongs also needs to be set.

image-20231213171737721

Team members come from the following sources:

  • After creating an account, the user creates a team on their own and adds themselves to the team with the Admin role
  • Joining a team after accepting an invitation
  • Addition by an administrator through the admin backend
  • Addition by calling the informat.company.addCompanyMember() function in scripts

Team members can be removed through the following methods:

  • Removal in the admin backend
  • Voluntary withdrawal by the user
  • Removal by calling the informat.company.deleteCompanyMember() function in scripts

1.3.3 Application Member

Team members can join multiple applications. In each application, a User is assigned different Application Roles. Application roles are associated with their operable permissions, and Users can have multiple roles.

Each application has a default Admin role with all permissions.

image-20231213171832367

Application members come from the following sources:

  • Addition by the application administrator to the application
  • The application administrator sets the application authorization method to Authorization by Role and Department, and the Team Member's department or team role falls within the authorized scope
  • Addition by calling the informat.user.addUser() function in scripts

Application members can be removed through the following methods:

  • Removal by the application administrator
  • If the authorization method when joining is Authorization by Role and Department, and the Team Member's department or team role is no longer within the authorized scope
  • Removal by calling the informat.user.deleteUser() function in scripts

1.3.4 Department

In each team, a department organizational structure tree can be built to meet the needs of organizational structure management. Each user must join at least one department, and the user's department list is recorded in departmentList in the user information.

image-20231213173527218

Departments come from the following sources:

  • After team deployment, the team is automatically created with the team name
  • The application administrator creates departments independently
  • Creation by calling the informat.dept.addDept() function in scripts

Departments can be removed through the following methods:

  • Removal by the application administrator
  • Removal by calling the informat.dept.deleteDept() function in scripts