acl_config.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. package v1
  2. var authenticationAllowlistMethods = map[string]bool{
  3. "/memos.api.v1.WorkspaceService/GetWorkspaceProfile": true,
  4. "/memos.api.v1.WorkspaceSettingService/GetWorkspaceSetting": true,
  5. "/memos.api.v1.WorkspaceSettingService/ListWorkspaceSettings": true,
  6. "/memos.api.v1.IdentityProviderService/GetIdentityProvider": true,
  7. "/memos.api.v1.IdentityProviderService/ListIdentityProviders": true,
  8. "/memos.api.v1.AuthService/GetAuthStatus": true,
  9. "/memos.api.v1.AuthService/SignIn": true,
  10. "/memos.api.v1.AuthService/SignInWithSSO": true,
  11. "/memos.api.v1.AuthService/SignOut": true,
  12. "/memos.api.v1.AuthService/SignUp": true,
  13. "/memos.api.v1.UserService/GetUser": true,
  14. "/memos.api.v1.UserService/GetUserAvatarBinary": true,
  15. "/memos.api.v1.UserService/ListAllUserStats": true,
  16. "/memos.api.v1.UserService/SearchUsers": true,
  17. "/memos.api.v1.MemoService/GetMemo": true,
  18. "/memos.api.v1.MemoService/GetMemoByUid": true,
  19. "/memos.api.v1.MemoService/ListMemos": true,
  20. "/memos.api.v1.MarkdownService/GetLinkMetadata": true,
  21. "/memos.api.v1.ResourceService/GetResourceBinary": true,
  22. "/memos.api.v1.ResourceService/GetResourceByUid": true,
  23. }
  24. // isUnauthorizeAllowedMethod returns whether the method is exempted from authentication.
  25. func isUnauthorizeAllowedMethod(fullMethodName string) bool {
  26. return authenticationAllowlistMethods[fullMethodName]
  27. }
  28. var allowedMethodsOnlyForAdmin = map[string]bool{
  29. "/memos.api.v1.UserService/CreateUser": true,
  30. "/memos.api.v1.WorkspaceSettingService/SetWorkspaceSetting": true,
  31. }
  32. // isOnlyForAdminAllowedMethod returns true if the method is allowed to be called only by admin.
  33. func isOnlyForAdminAllowedMethod(methodName string) bool {
  34. return allowedMethodsOnlyForAdmin[methodName]
  35. }