2021-07-12 18:22:16 +00:00
|
|
|
package utils
|
|
|
|
|
2021-08-04 06:48:57 +00:00
|
|
|
import (
|
|
|
|
"net/mail"
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
"github.com/authorizerdev/authorizer/server/constants"
|
2021-09-20 05:06:26 +00:00
|
|
|
"github.com/gin-gonic/gin"
|
2021-08-04 06:48:57 +00:00
|
|
|
)
|
2021-07-12 18:22:16 +00:00
|
|
|
|
|
|
|
func IsValidEmail(email string) bool {
|
|
|
|
_, err := mail.ParseAddress(email)
|
|
|
|
return err == nil
|
|
|
|
}
|
2021-08-04 06:48:57 +00:00
|
|
|
|
|
|
|
func IsValidRedirectURL(url string) bool {
|
|
|
|
if len(constants.ALLOWED_ORIGINS) == 1 && constants.ALLOWED_ORIGINS[0] == "*" {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
|
|
|
|
hasValidURL := false
|
|
|
|
urlDomain := GetDomainName(url)
|
|
|
|
|
|
|
|
for _, val := range constants.ALLOWED_ORIGINS {
|
|
|
|
if strings.Contains(val, urlDomain) {
|
|
|
|
hasValidURL = true
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return hasValidURL
|
|
|
|
}
|
2021-09-20 05:06:26 +00:00
|
|
|
|
|
|
|
func IsSuperAdmin(gc *gin.Context) bool {
|
|
|
|
secret := gc.Request.Header.Get("x-authorizer-admin-secret")
|
|
|
|
if secret == "" {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
return secret == constants.ADMIN_SECRET
|
|
|
|
}
|
|
|
|
|
|
|
|
func IsValidRolesArray(roles []string) bool {
|
|
|
|
valid := true
|
|
|
|
currentRoleMap := map[string]bool{}
|
|
|
|
|
|
|
|
for _, currentRole := range constants.ROLES {
|
|
|
|
currentRoleMap[currentRole] = true
|
|
|
|
}
|
|
|
|
for _, inputRole := range roles {
|
|
|
|
if !currentRoleMap[inputRole] {
|
|
|
|
valid = false
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return valid
|
|
|
|
}
|
|
|
|
|
|
|
|
func IsValidRole(userRoles []string, role string) bool {
|
|
|
|
valid := false
|
|
|
|
for _, currentRole := range userRoles {
|
|
|
|
if role == currentRole {
|
|
|
|
valid = true
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return valid
|
|
|
|
}
|
|
|
|
|
|
|
|
func IsStringArrayEqual(a, b []string) bool {
|
|
|
|
if len(a) != len(b) {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
for i, v := range a {
|
|
|
|
if v != b[i] {
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true
|
|
|
|
}
|