acl_config.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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/GetUserByUsername": true,
  15. "/memos.api.v1.UserService/GetUserAvatarBinary": true,
  16. "/memos.api.v1.UserService/ListAllUserStats": true,
  17. "/memos.api.v1.UserService/SearchUsers": true,
  18. "/memos.api.v1.MemoService/GetMemo": true,
  19. "/memos.api.v1.MemoService/ListMemos": true,
  20. "/memos.api.v1.MarkdownService/GetLinkMetadata": true,
  21. "/memos.api.v1.ResourceService/GetResourceBinary": true,
  22. }
  23. // isUnauthorizeAllowedMethod returns whether the method is exempted from authentication.
  24. func isUnauthorizeAllowedMethod(fullMethodName string) bool {
  25. return authenticationAllowlistMethods[fullMethodName]
  26. }
  27. var allowedMethodsOnlyForAdmin = map[string]bool{
  28. "/memos.api.v1.UserService/CreateUser": true,
  29. "/memos.api.v1.WorkspaceSettingService/SetWorkspaceSetting": true,
  30. }
  31. // isOnlyForAdminAllowedMethod returns true if the method is allowed to be called only by admin.
  32. func isOnlyForAdminAllowedMethod(methodName string) bool {
  33. return allowedMethodsOnlyForAdmin[methodName]
  34. }