Enforced in the API
Who the portal user is, which tenant they belong to and which company they may see are all resolved at one gate: getPortalUser. The code map counts 72 callers of it, so the access decision is not scattered across endpoints. On a submission the company id is not read from the request body at all — it is taken from the scope of the session, so sending a different one from the browser achieves nothing. If the chosen device is not in that company’s inventory, the submission is refused outright.
Four screens, nothing more
Overview and Requests under Support, inventory under My devices, the Knowledge Base under Help. End users never get the internal menu, the operations screens, the sales group or the administration tabs. Even in organization mode, an end user does not see the screen that shares records with PolariStar Op.
The response arrives trimmed
In the device record sent to the portal, the serial number, IP address, MAC address, firmware version and location come back empty. What remains is the part a customer can act on: name, type, vendor, model, status, who it is assigned to, and — with the lifecycle permission — the licence, support and warranty names with their expiry dates. Sale price, cost, gross margin, commission and supplier purchase price are not on this surface at all, and internal technical notes come back blank with the team roster empty. Nor is there any trace of another customer's identity, device, request or report.
Requests land in the inbox
A submission from the portal does not become a ticket straight away. It arrives in the inbox for review, tagged with Portal as its channel, and the team is notified. The answer the customer gets says so plainly: a ticket is created once the support team takes it in, and until then it is not in the request list. The ticket queue does not swell with every message from outside.
Four permissions, four switches
The customer role is not one on-off flag: viewing requests, raising requests, viewing documents and viewing lifecycle dates are granted separately. Licence, support and warranty dates appear only with the lifecycle permission, and that same permission decides who receives the 90, 30 and 7 day expiry notices. Without the create permission the portal stays a read-only window.
Customer confirms, team closes
A customer can say “it works for me now” from the portal. That does not close the record; it marks it ready to close. The final close belongs to the internal team, together with a closing summary, so an optimistic confirmation and a verified fix are never squeezed into one step.
Invited accounts, MFA first
Customers do not create their own accounts. An administrator opens one from the Users screen and picks the role and the permissions. The temporary credentials are shown once and handed over through a secure channel. On first login the invited user sets their own username and a password of at least 12 characters, and cannot reach portal data until the Authenticator MFA setup is finished.
Per install, per tenant
A portal user's company access is kept unique per tenant, user and company, and the session is stored with the tenant it belongs to, while the username is unique across the installation. The same email address can exist in two separate PolariStar installations, but those are not one identity, and access in one does not carry into the other.
Organization mode says department
Same engine, different vocabulary. On the organization surface the portal is a department user's request surface: department instead of customer, user confirmation instead of customer confirmation, IT team instead of technical team. The fields and the flow stay the same; only the labels change.