forked from krasnopv/das
-
Notifications
You must be signed in to change notification settings - Fork 0
/
role.go
110 lines (98 loc) · 3.8 KB
/
role.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
package account
import (
"github.com/ProximaB/das/businesslogic"
"github.com/ProximaB/das/config/database"
"github.com/ProximaB/das/config/routes/middleware"
"github.com/ProximaB/das/controller/account"
"github.com/ProximaB/das/controller/util"
"net/http"
)
const apiAccountRoleCreateApplication = "/api/v1.0/account/role/application"
const apiAccountRoleRespondApplication = "/api/v1.0/account/role/provision" // Admin use only
const apiAccountRoleApplicationStatus = "/api/account/role/application/status"
var roleProvisionService = businesslogic.NewRoleProvisionService(
database.AccountRepository,
database.RoleApplicationRepository,
database.RoleApplicationStatusRepository,
database.AccountRoleRepository,
database.OrganizerProvisionRepository,
database.OrganizerProvisionHistoryRepository)
var roleApplicationServer = account.NewRoleApplicationServer(middleware.AuthenticationStrategy, *roleProvisionService)
var createRoleApplicationController = util.DasController{
Name: "CreateRoleApplicationController",
Description: "Create a role application in DAS",
Method: http.MethodPost,
Endpoint: apiAccountRoleCreateApplication,
Handler: roleApplicationServer.CreateRoleApplicationHandler,
AllowedRoles: []int{
businesslogic.AccountTypeAthlete, // 2018-12-12: all users have athlete role and are granted to apply for other roles
},
}
var searchRoleApplicationController = util.DasController{
Name: "SearchRoleApplicationController",
Description: "Search role applications in DAS",
Method: http.MethodGet,
Endpoint: apiAccountRoleCreateApplication,
Handler: roleApplicationServer.SearchRoleApplicationHandler,
AllowedRoles: []int{
businesslogic.AccountTypeAthlete,
businesslogic.AccountTypeAdjudicator,
businesslogic.AccountTypeScrutineer,
businesslogic.AccountTypeOrganizer,
businesslogic.AccountTypeDeckCaptain,
businesslogic.AccountTypeEmcee,
},
}
var adminSearchRoleApplicationController = util.DasController{
Name: "Admin Search Role Application Controller",
Description: "Search role application without moderation on criteria",
Method: http.MethodGet,
Endpoint: "/api/v1.0/admin/role/applications",
Handler: roleApplicationServer.AdminGetRoleApplicationHandler,
AllowedRoles: []int{
businesslogic.AccountTypeAdministrator,
},
}
var provisionRoleApplicationController = util.DasController{
Name: "ProvisionRoleApplicationController",
Description: "Admin provision applications to restricted roles",
Method: http.MethodPut,
Endpoint: apiAccountRoleRespondApplication,
Handler: roleApplicationServer.ProvisionRoleApplicationHandler,
AllowedRoles: []int{
businesslogic.AccountTypeOrganizer,
businesslogic.AccountTypeAdministrator,
},
}
var getRoleApplicationStatusController = util.DasController{
Name: "GetRoleApplicationStatusController",
Description: "Get all possible Role Application Status ",
Method: http.MethodGet,
Endpoint: apiAccountRoleApplicationStatus,
Handler: roleApplicationServer.GetAllApplicationStatus,
AllowedRoles: []int{businesslogic.AccountTypeNoAuth},
}
const apiAccountRole = "/api/v1.0/account/role"
var roleServer = account.RoleServer{
middleware.AuthenticationStrategy,
database.AccountRepository,
}
var RoleApplicationControllerGroup = util.DasControllerGroup{
Controllers: []util.DasController{
createRoleApplicationController,
searchRoleApplicationController,
adminSearchRoleApplicationController,
provisionRoleApplicationController,
getRoleApplicationStatusController,
},
}
var RoleController = util.DasController{
Name: "RoleController",
Description: "Provide the roles of a user",
Method: http.MethodGet,
Endpoint: apiAccountRole,
Handler: roleServer.GetAccountRolesHandler,
AllowedRoles: []int{
businesslogic.AccountTypeAthlete,
},
}