Skip to content

Instantly share code, notes, and snippets.

View jsinglet's full-sized avatar

John L. Singleton jsinglet

View GitHub Profile
:host-context(.theme-client1) {
.message {
color: red;
}
}
:host-context(.theme-client2) {
.message {
color: blue;
import { Component, OnInit, HostBinding } from "@angular/core";
import { Tenant, TenantService } from './tenant/tenant.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css', './app.component.skins.less']
})
export class AppComponent implements OnInit {
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LoginService, getLoginService } from './login.service';
import { TenantService, Tenant } from '../tenant/tenant.service';
import { Client1loginService } from './client1login.service';
import { Client2loginService } from './client2login.service';
import { RouterModule, Routes, Router } from "@angular/router";
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { LoginService, getLoginService } from './login.service';
import { TenantService } from '../tenant/tenant.service';
import { Client1loginService } from './client1login.service';
import { Client2loginService } from './client2login.service';
@NgModule({
import { Injectable } from '@angular/core';
import { LoginService } from './login.service';
@Injectable({
providedIn: 'root'
})
export class Client2loginService extends LoginService {
constructor() { super(); }
import { Injectable } from '@angular/core';
import { LoginService } from './login.service';
@Injectable({
providedIn: 'root'
})
export class Client1loginService extends LoginService {
constructor() { super(); }
import { TenantService, Tenant } from "../tenant/tenant.service";
import { Client1loginService } from './client1login.service';
import { Client2loginService } from './client2login.service';
export function getLoginService(
tenantService: TenantService,
client1LoginService: Client1loginService,
Client2loginService: Client2loginService
): LoginService {
if (tenantService.getTenant() === Tenant.CLIENT1) {
import { NgModule } from "@angular/core";
import { CookieModule } from "ngx-cookie";
import { CommonModule } from "@angular/common";
import { HTTP_INTERCEPTORS } from "@angular/common/http";
import { TenantInterceptor } from "./tenant.interceptor";
@NgModule({
declarations: [],
imports: [CommonModule],
providers: [
import { Injectable } from "@angular/core";
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from "@angular/common/http";
import { Observable } from "rxjs";
import { TenantService } from "./tenant.service";
@Injectable()
export class TenantInterceptor implements HttpInterceptor {
constructor(private tenantService: TenantService) {}
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
@jsinglet
jsinglet / tenant.service.ts
Last active February 16, 2021 23:08
Multi-Tenant-Angular
import { Injectable } from '@angular/core';
import { HttpHeaders } from "@angular/common/http";
@Injectable({
providedIn: 'root'
})
export class TenantService {
constructor() {}
getTenantForHostname(hostname: string): Tenant {