aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/service.go
diff options
context:
space:
mode:
authorMax Resnick <max@ofmax.li>2022-11-25 21:28:54 -0800
committerMax Resnick <max@ofmax.li>2022-12-11 21:13:05 -0800
commitab38860d69c194969bea9ae5ef385c35eb94b988 (patch)
treec319053354cb2a772609b706368b1fd5741a44fc /internal/admin/service.go
parent9e79e588131b0d59abefd84405cb7908bc2baa77 (diff)
downloadgo-git-server-ab38860d69c194969bea9ae5ef385c35eb94b988.tar.gz
add tests, new policies, init repo manager
Diffstat (limited to '')
-rw-r--r--internal/admin/service.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/internal/admin/service.go b/internal/admin/service.go
new file mode 100644
index 0000000..c09ad66
--- /dev/null
+++ b/internal/admin/service.go
@@ -0,0 +1,37 @@
+package admin
+
+import (
+ "log"
+
+ casbin "github.com/casbin/casbin/v2"
+)
+
+// Servicer container for dependencies and functions
+type Servicer struct {
+ *casbin.SyncedEnforcer
+ Conf *ServerRepos
+}
+
+// InitServer initialize a git server and configure
+func (s *Servicer) InitServer() {
+ policies := s.Conf.ServerPolicies()
+ s.AddPolicies(policies)
+ s.SavePolicy()
+ s.LoadPolicy()
+ s.Conf.ServerPolicies()
+}
+
+// NewService create a new admin service, load config, and generate policies
+func NewService(modelPath, policyPath, serverConfigPath string) *Servicer {
+ enf, err := casbin.NewSyncedEnforcer(modelPath, policyPath)
+ if err != nil {
+ log.Fatalf("Couldn't load the enforcer encountered the following error: %s", err)
+ }
+ conf := loadServerConfig(serverConfigPath)
+ svc := &Servicer{
+ enf,
+ conf,
+ }
+ svc.InitServer()
+ return svc
+}