1: <?php
2:
3: namespace PHPixie\Bundles;
4:
5: class Auth implements \PHPixie\Auth\Repositories\Registry
6: {
7: protected $bundleRegistry = array();
8:
9: public function __construct($bundleRegistry)
10: {
11: $this->bundleRegistry = $bundleRegistry;
12: }
13:
14: public function repository($name)
15: {
16: $split = explode('.', $name, 2);
17: list($bundleName, $name) = $split;
18:
19: $bundle = $this->getAuthBundle($bundleName);
20:
21: if($bundle !== null) {
22: $authRepositories = $bundle->authRepositories();
23: if($authRepositories !== null) {
24: return $authRepositories->repository($name);
25: }
26: }
27:
28: throw new \PHPixie\Bundles\Exception("Bundle '$bundleName' does not provide auth repositories");
29: }
30:
31: protected function getAuthBundle($bundleName)
32: {
33: $bundle = $this->bundleRegistry->get($bundleName);
34:
35: if(!($bundle instanceof Bundle\Provides\Auth)) {
36: return null;
37: }
38:
39: return $bundle;
40: }
41: }