We made the decision that this application will also serve the public pages to guests and customers, to avoid the overhead of having to synchronize all data between this application and a bespoke WordPress plugin. That means that i no longer can have a /company/slug in the URL to know which company the request is for, not only because it looks ugly but because guest users do not have a “main company”—or any company whatsoever. Since the public-facing web is going to be served through a valid DNS domain, and all companies are going to have a different domain, i realized this is enough: i only had to add a relation of company and their hosts. The same company can have many hosts for staging servers or to separate the administration and public parts, for instance. With change, the company is already known from the first handler, and can pass it down to all the others, not only the handlers under /company/slug/whatever. And i no longer need the companyURL function, as there is no more explicit company in the URL. Even though template technically does not need the template, as it only contains the ID —the rest of the data is in a relation inaccessible to guests for now—, but i left the parameter just in case later on i need the decimal digits or currency symbol for whatever reason.
21 lines
471 B
PL/PgSQL
21 lines
471 B
PL/PgSQL
-- Deploy camper:company_host to pg
|
|
-- requires: roles
|
|
-- requires: schema_public
|
|
|
|
begin;
|
|
|
|
set search_path to public, camper;
|
|
|
|
create table company_host (
|
|
host text primary key,
|
|
company_id integer not null references company
|
|
);
|
|
|
|
comment on column company_host.host is 'This should be a value from the HTTP Host header.';
|
|
|
|
grant select on table company_host to guest;
|
|
grant select on table company_host to employee;
|
|
grant select on table company_host to admin;
|
|
|
|
commit;
|