70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
package authorization
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"bitbucket.org/nemt/nemt-portal-api/application/viewmodel"
|
|
)
|
|
|
|
func isAChildOrganization(potentialParent viewmodel.Organization, potentialChild viewmodel.Organization) bool {
|
|
for _, org := range potentialParent.ChildOrgs {
|
|
if potentialChild.UUID == org.UUID {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func isSameOrganization(organizationA viewmodel.Organization, organizationB viewmodel.Organization) bool {
|
|
return organizationA.UUID == organizationB.UUID
|
|
}
|
|
|
|
func grabOrgFromUser(user viewmodel.User) (viewmodel.Organization, error) {
|
|
if len(user.Organizations) < 1 {
|
|
return viewmodel.Organization{}, fmt.Errorf("User has no organizations %v", user)
|
|
}
|
|
|
|
return user.Organizations[0], nil
|
|
}
|
|
|
|
func CanCreateOrganization(user viewmodel.User, organization viewmodel.Organization ) bool {
|
|
//TODO : implement checking
|
|
|
|
userRole, err := grabProfileFromUser(user)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
|
|
/*Admin Provider Manage all Organizations */
|
|
if userRole.Key == providerAdmin{
|
|
return true
|
|
}
|
|
|
|
/* Admin BCBSI Manage all Organizations */
|
|
if userRole.Key == bcbsiAdmin{
|
|
return true
|
|
}
|
|
|
|
/* Admin Technical Support Manage all Organizations */
|
|
if userRole.Key == brighterDevAdmin{
|
|
return true
|
|
}
|
|
|
|
/* Admin Plan
|
|
Manage the authenticated Authorized User's Plan (Organization) and children of this Plan*/
|
|
if userRole.Key == planAdmin {
|
|
return true
|
|
}
|
|
|
|
/* Super Admin Technical Support Manage all Organizations*/
|
|
if userRole.Key == superAdmin {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
func CanUpdateOrganization(user viewmodel.User, organization viewmodel.Organization) bool {
|
|
return CanCreateOrganization(user,organization)
|
|
}
|