Aplicativos da Web como o slack têm o nome da empresa como um subdomínio. Isso pode ser muito útil para dar a cada empresa um espaço personalizado. Com AngularJS é realmente fácil obter o subdomínio e salvá-lo em um serviço singleton.
Primeiro, precisamos de um serviço que nos dê o subdomínio.
angular.module('app').factory('SubdomainService', [
'$location', function($location) {
var service = {};
var host = $location.host();
if (host.indexOf('.') >= 0) {
service.company = host.split('.')[0];
}
return service;
}
]);
Por fim, precisamos apenas de um serviço simples para reter o valor.
angular.module('app').factory('CurrentCompanyService', [
'$q', 'CompanyService', 'SubdomainService', function($q, CompanyService, SubdomainService) {
var deferred = $q.defer();
CompanyService.get_by_slug(SubdomainService.company).then(function(company) {
return deferred.resolve(company);
});
return deferred.promise;
}
]);