{"id":22190983,"url":"https://github.com/yuhexiong/permission-api-golang","last_synced_at":"2026-05-19T07:01:57.170Z","repository":{"id":222590688,"uuid":"746190213","full_name":"yuhexiong/permission-api-golang","owner":"yuhexiong","description":"Permission API for YAML-based permission management and Viper integration in Go. ","archived":false,"fork":false,"pushed_at":"2025-01-27T14:32:13.000Z","size":8868,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-27T15:37:37.769Z","etag":null,"topics":["api","backend","go","golang","mongodb","restful-api","viper"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuhexiong.png","metadata":{"files":{"readme":"README-CH.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-21T10:45:27.000Z","updated_at":"2025-01-27T14:32:18.000Z","dependencies_parsed_at":"2024-02-15T05:29:52.535Z","dependency_job_id":"28dc3d7f-ff4c-4418-b610-a1e0288e4682","html_url":"https://github.com/yuhexiong/permission-api-golang","commit_stats":null,"previous_names":["yuhexiong/permission-api-golang"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuhexiong%2Fpermission-api-golang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuhexiong%2Fpermission-api-golang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuhexiong%2Fpermission-api-golang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuhexiong%2Fpermission-api-golang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuhexiong","download_url":"https://codeload.github.com/yuhexiong/permission-api-golang/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245351758,"owners_count":20601087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","backend","go","golang","mongodb","restful-api","viper"],"created_at":"2024-12-02T12:13:49.128Z","updated_at":"2025-10-28T22:34:48.490Z","avatar_url":"https://github.com/yuhexiong.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Permission API\n關於如何在 YAML 文件中設定權限並使用 Viper 讀取。  \n自動檢查權限並更新資料庫。  \n每次啟動專案時，建立一個系統使用者（使用者名稱: admin，密碼: 存在 .env 中），並賦予其所有權限。  \n使用 logFile 記錄所有日誌。\n\n## Overview\n\n- 語言: Go v1.21.1\n- Web 框架: Gin v1.9.1\n- 資料庫: MongoDB v7.0.2\n\n## Run\n\n### 更新模組\n```\ngo get -u \u0026\u0026 go mod tidy -v\n```\n\n### 執行\n```\ngo run main.go\n```\n\n## Permission\n複製 `etc/apiPermission.yaml.default` 並重新命名為 `etc/apiPermission.yaml` 以限制 API 存取權限。  \n```\nPermissionDefs:\n  ChangePassword:\n    Category: \"PASSWORD\"\n    Code: \"changePassword\"\n\nAPIToPermission:\n  - Url: \"/user/:userId/password\"\n    Methods: \"PATCH\"\n    PermissionName: \"ChangePassword\"\n```\n\n## ENV\n複製 `.env.default` 並重新命名為 `.env`\n```\nMONGO_URL=\nDB_NAME=\nAPI_PORT=\nADMIN_PASSWORD=\nJWTKey=\n```\n\n## API\n\n### auth 身分認證（基本權限設定）\n- POST /auth/login: 登入（不需要帶 token）\n- POST /auth/logout: 登出\n\n### user 使用者（基本權限設定）\n- PATCH /user/myPassword: 修改自己的密碼\n- PATCH /user/{userId}/password: 修改別人的密碼（需有權限）\n- POST /user: 建立使用者（需有權限）\n- POST /user/find: 搜尋使用者\n\n### mapUserPermission 使用者與權限關聯（基本權限設定）\n- POST /mapUserPermission: 建立使用者與權限關聯（需有權限）\n- POST /mapUserPermission/find: 搜尋使用者與權限關聯（需有權限）\n- DELETE /mapUserPermission/{id}: 刪除使用者與權限關聯（需有權限）\n\n### permission 權限（基本權限設定）\n- POST /permission/find: 搜尋所有權限（需有權限）\n\n### setting 設定（權限相關應用）\n- GET /setting/{code}: 搜尋設定\n- PATCH /setting/{code}/{value}: 更新設定值（需有權限）\n\n### task 任務（權限相關應用）\n- POST /task: 分派任務（需有權限）\n- POST /task/find: 搜尋所有任務\n- PATCH /task/{id}/progressType/{progressType}: 更新任務進度（需為原先指派者或被指派者/DONE 前須驗收完畢/DELETE 需為原先指派者），移至測試會發送通知原先指派者驗收\n- PATCH /task/{id}/checked/{checked}: 驗收/驗收失敗任務（需有權限/需為原先指派者），驗收成功會發送通知給被指派者\n- DELETE /task/{id}: 刪除任務（需有權限/需為原先指派者）\n\n### notification 通知（權限相關應用）\n- GET /notification: 搜尋所有通知（時間從近排到遠）\n- PATCH /notification/{id}/read: 已讀通知（需為被發送者）\n- PATCH /notification/read/all: 已讀自己所有通知\n\n## Customized Error Code\n- InternalServerError: 000001\n- InvalidTokenError: 000002\n- WrongPasswordError: 000003\n- UserNotFoundError: 000004\n- PermissionDeniedError: 000107\n- InvalidParameterError: 000108\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuhexiong%2Fpermission-api-golang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuhexiong%2Fpermission-api-golang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuhexiong%2Fpermission-api-golang/lists"}