summaryrefslogtreecommitdiffstats
path: root/services/context (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Rewrite OpenGraph HeaderJakobDev2025-01-011-0/+4
|
* UpdateJakobDev2024-12-181-0/+5
|
* feat: Add summary card for repos and releasesJakobDev2024-12-141-0/+2
|
* Merge branch 'forgejo' into forgejoFermé le Lundi2024-11-281-0/+11
|\
| * Merge pull request 'Improve Swagger documentation for user endpoints' ↵Otto2024-11-281-0/+11
| |\ | | | | | | | | | | | | | | | | | | (#6050) from JakobDev/forgejo:userswagger into forgejo Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6050 Reviewed-by: Otto <otto@codeberg.org>
| | * Improve Swagger documentation for user endpointsJakobDev2024-11-231-0/+11
| | |
* | | Update services/context/csrf.goFermeLeLundi2024-11-281-1/+1
|/ / | | | | | | Typo
* | Remove unnecessary code (#32560)Lunny Xiao2024-11-241-7/+0
| | | | | | | | | | | | | | PushMirrors only be used in the repository setting page. So it should not be loaded on every repository page. (cherry picked from commit 0d5abd9b3e04a09f5d7de720c99e3451723e028e)
* | Calculate `PublicOnly` for org membership only once (#32234)65432024-11-171-4/+3
|/ | | | | | | | | | | | | | | | | | | | | Refactoring of #32211 this move the PublicOnly() filter calcuation next to the DB querys and let it be decided by the Doer --- *Sponsored by Kithara Software GmbH* (cherry picked from commit 43c252dfeaf9ab03c4db3e7ac5169bc0d69901ac) Conflicts: models/organization/org_test.go models/organization/org_user_test.go routers/web/org/home.go rather simple conflict resolution but not trivial tests/integration/user_count_test.go had to be adapted (simple) because it does not exist in Gitea and uses the modified model
* fix: extend `forgejo_auth_token` tableGusted2024-11-151-1/+1
| | | | | | | | | | | | | | | | | | - Add a `purpose` column, this allows the `forgejo_auth_token` table to be used by other parts of Forgejo, while still enjoying the no-compromise architecture. - Remove the 'roll your own crypto' time limited code functions and migrate them to the `forgejo_auth_token` table. This migration ensures generated codes can only be used for their purpose and ensure they are invalidated after their usage by deleting it from the database, this also should help making auditing of the security code easier, as we're no longer trying to stuff a lot of data into a HMAC construction. -Helper functions are rewritten to ensure a safe-by-design approach to these tokens. - Add the `forgejo_auth_token` to dbconsistency doctor and add it to the `deleteUser` function. - TODO: Add cron job to delete expired authorization tokens. - Unit and integration tests added.
* [PORT] Refactor DateUtils and merge TimeSince (gitea#32409)wxiaoguang2024-11-101-1/+0
| | | | | | | | | Follow #32383 and #32402 --- Conflict resolution: Magic, painful. (cherry picked from commit b068dbd40ee3b4dc7d18cdcf168f0c24cea234c0)
* [PORT] Replace DateTime with DateUtils (gitea#32383)wxiaoguang2024-11-031-0/+1
| | | | (cherry picked from commit fec6b3d50072e48bb51c18c5c4ea682dc6319573)
* Merge pull request 'fix: correct documentation for non 200 responses in ↵Earl Warren2024-10-151-17/+51
|\ | | | | | | | | | | | | swagger' (#5491) from JakobDev/forgejo:fixswagger into forgejo Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5491 Reviewed-by: Otto <otto@codeberg.org>
| * fix: correct documentation for non 200 responses in swaggerJakobDev2024-10-071-17/+51
| |
* | Fix bug when a token is given public onlyLunny Xiao2024-10-101-0/+1
|/ | | | | | | | | | | Port of https://github.com/go-gitea/gitea/pull/32204 (cherry picked from commit d6d3c96e6555fc91b3e2ef21f4d8d7475564bb3e) Conflicts: routers/api/v1/api.go services/context/api.go trivial context conflicts
* Refactor CSRF protector (#32057) (fix forgejo tests)Earl Warren2024-09-271-3/+4
| | | | Fix the tests unique to Forgejo that are impacted by the refactor.
* Refactor CSRF protector (#32057)wxiaoguang2024-09-272-137/+61
| | | | | | | | | | | | | | Remove unused CSRF options, decouple "new csrf protector" and "prepare" logic, do not redirect to home page if CSRF validation falis (it shouldn't happen in daily usage, if it happens, redirecting to home doesn't help either but just makes the problem more complex for "fetch") (cherry picked from commit 1fede04b83288d8a91304a83b7601699bb5cba04) Conflicts: options/locale/locale_en-US.ini tests/integration/repo_branch_test.go trivial context conflicts
* [CHORE] Move cache libraryGusted2024-08-273-3/+3
| | | | | | | | | - This is in the spirit of #5090. - Move to a fork of gitea.com/go-chi/cache, code.forgejo.org/go-chi/cache. It removes unused code (a lot of adapters, that can't be used by Forgejo) and unused dependencies (see go.sum). Also updates existing dependencies. https://code.forgejo.org/go-chi/cache/compare/8c64f1a3625880d82a47996bf0afcd6387a98e05..main
* [CHORE] Move captcha libraryGusted2024-08-271-10/+35
| | | | | | | | | | | | | | | - This is a fork of https://github.com/dchest/captcha, as https://gitea.com/go-chi/captcha is a fork of github.com/go-macaron/captcha which is a fork (although not properly credited) of a older version of https://github.com/dchest/captcha. Hence why I've just forked the original. - The fork includes some QoL improvements (uses standard library for determistic RNG instead of rolling your own crypto), and removal of audio support (500KiB unused data that bloated the binary otherwise). Flips the image over the x-asis. https://code.forgejo.org/go-chi/captcha/compare/47270f2b55862b38f9f65f615b53c1e04e814ef0..main - This move is needed for the next commit, because gitea.com/go-chi/captcha included the gitea.com/go-chi/cache dependency.
* [CHORE] Move to new sessioner libraryGusted2024-08-251-1/+1
| | | | | | | | | | | | | | - Moves to a fork of gitea.com/go-chi/session that removed support for couchbase (and ledis, but that was never made available in Forgejo) along with other code improvements. https://code.forgejo.org/go-chi/session/compare/f8ce6775954417f3270aafd573d3e4e448a44bad..main - The rationale for removing Couchbase is quite simple. Its not licensed under FOSS license (https://www.couchbase.com/blog/couchbase-adopts-bsl-license/) and therefore cannot be tested by Forgejo and shouldn't be supported. This is a similair vein to the removal of MSSQL support (https://codeberg.org/forgejo/discussions/issues/122) - A additional benefit is that this reduces the Forgejo binary by ~600Kb.
* [BUG] Allow 4 charachter SHA in `/src/commit`Gusted2024-08-061-2/+2
| | | | | | | | - Adjust the `RepoRefByType` middleware to allow for commit SHAs that are as short as 4 characters (the minium that Git requires). - Integration test added. - Follow up to 4d76bbeda71f585e9212adb13f3ce7b73e583004 - Resolves #4781
* feat(quota): Quota enforcementGergely Nagy2024-08-021-0/+156
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous commit laid out the foundation of the quota engine, this one builds on top of it, and implements the actual enforcement. Enforcement happens at the route decoration level, whenever possible. In case of the API, when over quota, a 413 error is returned, with an appropriate JSON payload. In case of web routes, a 413 HTML page is rendered with similar information. This implementation is for a **soft quota**: quota usage is checked before an operation is to be performed, and the operation is *only* denied if the user is already over quota. This makes it possible to go over quota, but has the significant advantage of being practically implementable within the current Forgejo architecture. The goal of enforcement is to deny actions that can make the user go over quota, and allow the rest. As such, deleting things should - in almost all cases - be possible. A prime exemption is deleting files via the web ui: that creates a new commit, which in turn increases repo size, thus, is denied if the user is over quota. Limitations ----------- Because we generally work at a route decorator level, and rarely look *into* the operation itself, `size:repos:public` and `size:repos:private` are not enforced at this level, the engine enforces against `size:repos:all`. This will be improved in the future. AGit does not play very well with this system, because AGit PRs count toward the repo they're opened against, while in the GitHub-style fork + pull model, it counts against the fork. This too, can be improved in the future. There's very little done on the UI side to guard against going over quota. What this patch implements, is enforcement, not prevention. The UI will still let you *try* operations that *will* result in a denial. Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
* feat(quota): Humble beginnings of a quota engineGergely Nagy2024-08-022-4/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an implementation of a quota engine, and the API routes to manage its settings. This does *not* contain any enforcement code: this is just the bedrock, the engine itself. The goal of the engine is to be flexible and future proof: to be nimble enough to build on it further, without having to rewrite large parts of it. It might feel a little more complicated than necessary, because the goal was to be able to support scenarios only very few Forgejo instances need, scenarios the vast majority of mostly smaller instances simply do not care about. The goal is to support both big and small, and for that, we need a solid, flexible foundation. There are thee big parts to the engine: counting quota use, setting limits, and evaluating whether the usage is within the limits. Sounds simple on paper, less so in practice! Quota counting ============== Quota is counted based on repo ownership, whenever possible, because repo owners are in ultimate control over the resources they use: they can delete repos, attachments, everything, even if they don't *own* those themselves. They can clean up, and will always have the permission and access required to do so. Would we count quota based on the owning user, that could lead to situations where a user is unable to free up space, because they uploaded a big attachment to a repo that has been taken private since. It's both more fair, and much safer to count quota against repo owners. This means that if user A uploads an attachment to an issue opened against organization O, that will count towards the quota of organization O, rather than user A. One's quota usage stats can be queried using the `/user/quota` API endpoint. To figure out what's eating into it, the `/user/repos?order_by=size`, `/user/quota/attachments`, `/user/quota/artifacts`, and `/user/quota/packages` endpoints should be consulted. There's also `/user/quota/check?subject=<...>` to check whether the signed-in user is within a particular quota limit. Quotas are counted based on sizes stored in the database. Setting quota limits ==================== There are different "subjects" one can limit usage for. At this time, only size-based limits are implemented, which are: - `size:all`: As the name would imply, the total size of everything Forgejo tracks. - `size:repos:all`: The total size of all repositories (not including LFS). - `size:repos:public`: The total size of all public repositories (not including LFS). - `size:repos:private`: The total size of all private repositories (not including LFS). - `size:git:all`: The total size of all git data (including all repositories, and LFS). - `size:git:lfs`: The size of all git LFS data (either in private or public repos). - `size:assets:all`: The size of all assets tracked by Forgejo. - `size:assets:attachments:all`: The size of all kinds of attachments tracked by Forgejo. - `size:assets:attachments:issues`: Size of all attachments attached to issues, including issue comments. - `size:assets:attachments:releases`: Size of all attachments attached to releases. This does *not* include automatically generated archives. - `size:assets:artifacts`: Size of all Action artifacts. - `size:assets:packages:all`: Size of all Packages. - `size:wiki`: Wiki size Wiki size is currently not tracked, and the engine will always deem it within quota. These subjects are built into Rules, which set a limit on *all* subjects within a rule. Thus, we can create a rule that says: "1Gb limit on all release assets, all packages, and git LFS, combined". For a rule to stand, the total sum of all subjects must be below the rule's limit. Rules are in turn collected into groups. A group is just a name, and a list of rules. For a group to stand, all of its rules must stand. Thus, if we have a group with two rules, one that sets a combined 1Gb limit on release assets, all packages, and git LFS, and another rule that sets a 256Mb limit on packages, if the user has 512Mb of packages, the group will not stand, because the second rule deems it over quota. Similarly, if the user has only 128Mb of packages, but 900Mb of release assets, the group will not stand, because the combined size of packages and release assets is over the 1Gb limit of the first rule. Groups themselves are collected into Group Lists. A group list stands when *any* of the groups within stand. This allows an administrator to set conservative defaults, but then place select users into additional groups that increase some aspect of their limits. To top it off, it is possible to set the default quota groups a user belongs to in `app.ini`. If there's no explicit assignment, the engine will use the default groups. This makes it possible to avoid having to assign each and every user a list of quota groups, and only those need to be explicitly assigned who need a different set of groups than the defaults. If a user has any quota groups assigned to them, the default list will not be considered for them. The management APIs =================== This commit contains the engine itself, its unit tests, and the quota management APIs. It does not contain any enforcement. The APIs are documented in-code, and in the swagger docs, and the integration tests can serve as an example on how to use them. Signed-off-by: Gergely Nagy <forgejo@gergo.csillger.hu>
* feat(UI): add package counter to repo/user/org overview pagesRobert Wolff2024-07-311-1/+7
| | | | | | | - add package counter to repo/user/org overview pages - add go unit tests for repo/user has/count packages - add many more unit tests for packages model - fix error for non-existing packages in DeletePackageByID and SetRepositoryLink
* Add testifylint to lint checks (#4535)TheFox0x72024-07-301-1/+2
| | | | | | | | | go-require lint is ignored for now Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4535 Reviewed-by: Gusted <gusted@noreply.codeberg.org> Co-authored-by: TheFox0x7 <thefox0x7@gmail.com> Co-committed-by: TheFox0x7 <thefox0x7@gmail.com>
* ui for adding following reposMichael Jerger2024-05-241-0/+17
|
* Add codespell support and fix a good number of typos with its help (#3270)Yaroslav Halchenko2024-05-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | More about codespell: https://github.com/codespell-project/codespell . I personally introduced it to dozens if not hundreds of projects already and so far only positive feedback. ``` ❯ grep lint-spell Makefile @echo " - lint-spell lint spelling" @echo " - lint-spell-fix lint spelling and fix issues" lint: lint-frontend lint-backend lint-spell lint-fix: lint-frontend-fix lint-backend-fix lint-spell-fix .PHONY: lint-spell lint-spell: lint-codespell .PHONY: lint-spell-fix lint-spell-fix: lint-codespell-fix ❯ git grep lint- -- .forgejo/ .forgejo/workflows/testing.yml: - run: make --always-make -j$(nproc) lint-backend checks-backend # ensure the "go-licenses" make target runs .forgejo/workflows/testing.yml: - run: make lint-frontend ``` so how would you like me to invoke `lint-codespell` on CI? (without that would be IMHO very suboptimal and let typos sneak in) Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3270 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Yaroslav Halchenko <debian@onerussian.com> Co-committed-by: Yaroslav Halchenko <debian@onerussian.com>
* Merge pull request '[gitea] week 2024-19 cherry pick (gitea-github/main -> ↵Earl Warren2024-05-083-8/+7
|\ | | | | | | | | | | | | forgejo)' (#3639) from earl-warren/wcp/2024-19 into forgejo Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3639 Reviewed-by: Gergely Nagy <algernon@noreply.codeberg.org>
| * Ignore useless error message "broken pipe" (#30801)wxiaoguang2024-05-052-4/+3
| | | | | | | | | | | | Fix #30792 (cherry picked from commit 53b55223d167c3fc996dd0278a656f421408ace7)
| * Resolve lint for unused parameter and unnecessary type arguments (#30750)Chongyi Zheng2024-05-051-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Resolve all cases for `unused parameter` and `unnecessary type arguments` Related: #30729 --------- Co-authored-by: Giteabot <teabot@gitea.io> (cherry picked from commit e80466f7349164ce4cf3c07bdac30d736d20f035) Conflicts: modules/markup/markdown/transform_codespan.go modules/setting/incoming_email.go routers/api/v1/admin/user_badge.go routers/private/hook_pre_receive.go tests/integration/repo_search_test.go resolved by discarding the change, this is linting only and for the sake of avoiding future conflicts
* | feat(federation): validate like activities (#3494)Michael Jerger2024-05-071-0/+25
|/ | | | | | | | | | | | | | | | | | First step on the way to #1680 The PR will * accept like request on the api * validate activity in a first level You can find * architecture at: https://codeberg.org/meissa/forgejo/src/branch/forgejo-federated-star/docs/unsure-where-to-put/federation-architecture.md Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3494 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Co-authored-by: Michael Jerger <michael.jerger@meissa-gmbh.de> Co-committed-by: Michael Jerger <michael.jerger@meissa-gmbh.de>
* Enable more `revive` linter rules (#30608)silverwind2024-04-281-2/+0
| | | | | | | | | | | | | | | | | | Noteable additions: - `redefines-builtin-id` forbid variable names that shadow go builtins - `empty-lines` remove unnecessary empty lines that `gofumpt` does not remove for some reason - `superfluous-else` eliminate more superfluous `else` branches Rules are also sorted alphabetically and I cleaned up various parts of `.golangci.yml`. (cherry picked from commit 74f0c84fa4245a20ce6fb87dac1faf2aeeded2a2) Conflicts: .golangci.yml apply the linter recommendations to Forgejo code as well
* Clean up log messages (#30313)wxiaoguang2024-04-151-2/+2
| | | | | | | | | | | | `log.Xxx("%v")` is not ideal, this PR adds necessary context messages. Remove some unnecessary logs. Co-authored-by: Giteabot <teabot@gitea.io> (cherry picked from commit 83f83019ef3471b847a300f0821499b3896ec987) Conflicts: - modules/util/util.go Conflict resolved by picking `util.Iif` from 654cfd1dfbd3f3f1d94addee50b6fe2b018a49c3
* [PORT] drop utils.IsExternalURL (and expand IsRiskyRedirectURL tests) (#3167)oliverpool2024-04-151-3/+6
| | | | | | | | | | | | | | | | Related to #2773 Related to Refactor URL detection [gitea#29960](https://github.com/go-gitea/gitea/pull/29960) Related to Refactor external URL detection [gitea#29973](https://github.com/go-gitea/gitea/pull/29973) I added a bunch of tests to `httplib.TestIsRiskyRedirectURL` and some cases should be better handled (however it is not an easy task). I also ported the removal of `utils.IsExternalURL`, since it prevents duplicated (subtle) code. Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/3167 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org> Reviewed-by: Gusted <gusted@noreply.codeberg.org> Co-authored-by: oliverpool <git@olivier.pfad.fr> Co-committed-by: oliverpool <git@olivier.pfad.fr>
* Merge pull request '[PORT] Unify search boxes (gitea#29530)' (#2688) from ↵Earl Warren2024-03-241-1/+1
|\ | | | | | | | | | | | | snematoda/port-29530 into forgejo Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/2688 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
| * Unify search boxes (#29530)Denys Konovalov2024-03-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unify all but a few search boxes to use uniform style, uniform translations and shared templates where possible. Remove a few duplicated search templates, e. g. code search. <details><summary>Example after screenshots:</summary> ![grafik](https://github.com/go-gitea/gitea/assets/47871822/e20e7d6b-c6be-4a47-b132-672766f41421) ![grafik](https://github.com/go-gitea/gitea/assets/47871822/d5b11b9c-c12f-4a29-8fb0-24e5aa511d18) ![grafik](https://github.com/go-gitea/gitea/assets/47871822/d86bb444-36c7-426d-9cf1-c634963dffb1) ![grafik](https://github.com/go-gitea/gitea/assets/47871822/a76c0319-0518-484a-a840-563d02b61198) </details> Also includes #29700 Co-authored-by: 6543 <6543@obermui.de> --------- Co-authored-by: 6543 <m.huber@kithara.com> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: silverwind <me@silverwind.io> Co-authored-by: Giteabot <teabot@gitea.io> Conflicts: routers/web/repo/search.go templates/repo/home.tmpl templates/repo/search.tmpl templates/shared/repo_search.tmpl
* | Customizable "Open with" applications for repository clone (#29320)wxiaoguang2024-03-231-0/+1
|/ | | | | | | | Users could customize the "clone" menu with their own application URLs on the admin panel. Replace #22378 Close #21121 Close #22149
* Move get/set default branch from git package to gitrepo package to hide ↵Lunny Xiao2024-03-111-1/+1
| | | | | | | | | | | | | repopath (#29126) (cherry picked from commit 25b842df261452a29570ba89ffc3a4842d73f68c) Conflicts: routers/web/repo/wiki.go services/repository/branch.go services/repository/migrate.go services/wiki/wiki.go also apply to Forgejo specific usage of the refactored functions
* Use strict protocol check when redirect (#29642)wxiaoguang2024-03-111-0/+47
| | | | (cherry picked from commit c72e1a7abbba0cca34131a86273c987c47065dd0)
* implement fixoliverpool2024-03-071-1/+1
|
* Make PR form use toast to show error message (#29545)wxiaoguang2024-03-061-4/+5
| | | | | | ![image](https://github.com/go-gitea/gitea/assets/2114189/b7a14ed6-db89-4f21-a590-66cd33307233) (cherry picked from commit 27deea7330f83ddb37c918afbb4159053d8847cb)
* Let ctx.FormOptionalBool() return optional.Option[bool] (#29461)65432024-03-062-7/+7
| | | | | | | just some refactoring bits towards replacing **util.OptionalBool** with **optional.Option[bool]** (cherry picked from commit 274c0aea2e88db9bc41690c90e13e8aedf6193d4)
* Move context from modules to services (#29440)Lunny Xiao2024-03-0627-9/+4312
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since `modules/context` has to depend on `models` and many other packages, it should be moved from `modules/context` to `services/context` according to design principles. There is no logic code change on this PR, only move packages. - Move `code.gitea.io/gitea/modules/context` to `code.gitea.io/gitea/services/context` - Move `code.gitea.io/gitea/modules/contexttest` to `code.gitea.io/gitea/services/contexttest` because of depending on context - Move `code.gitea.io/gitea/modules/upload` to `code.gitea.io/gitea/services/context/upload` because of depending on context (cherry picked from commit 29f149bd9f517225a3c9f1ca3fb0a7b5325af696) Conflicts: routers/api/packages/alpine/alpine.go routers/api/v1/repo/issue_reaction.go routers/install/install.go routers/web/admin/config.go routers/web/passkey.go routers/web/repo/search.go routers/web/repo/setting/default_branch.go routers/web/user/home.go routers/web/user/profile.go tests/integration/editor_test.go tests/integration/integration_test.go tests/integration/mirror_push_test.go trivial context conflicts also modified all other occurrences in Forgejo specific files
* Another round of `db.DefaultContext` refactor (#27103)JakobDev2023-09-251-1/+1
| | | | | | | Part of #27065 --------- Co-authored-by: KN4CK3R <admin@oldschoolhack.me>
* Fix the display of org level badges (#26504)yp053272023-09-061-0/+1
| | | | | | | | | | | Follow #24654 #22705 #24232 In some pages we still have missing badges, for example: ![image](https://github.com/go-gitea/gitea/assets/18380374/f57fae6d-95ad-4996-8881-160c9cd27768) ![image](https://github.com/go-gitea/gitea/assets/18380374/11e86d43-b715-4d14-bdf0-51bf8b5c7b01) ![image](https://github.com/go-gitea/gitea/assets/18380374/61c514e7-d8f6-4c93-a61f-60604619e3a7)
* Replace `interface{}` with `any` (#25686)silverwind2023-07-041-2/+2
| | | | | Result of running `perl -p -i -e 's#interface\{\}#any#g' **/*` and `make fmt`. Basically the same [as golang did](https://github.com/golang/go/commit/2580d0e08d5e9f979b943758d3c49877fb2324cb).
* Decouple the different contexts from each other (#24786)wxiaoguang2023-05-211-7/+9
| | | | | | | | | | | | | | | | | | | | Replace #16455 Close #21803 Mixing different Gitea contexts together causes some problems: 1. Unable to respond proper content when error occurs, eg: Web should respond HTML while API should respond JSON 2. Unclear dependency, eg: it's unclear when Context is used in APIContext, which fields should be initialized, which methods are necessary. To make things clear, this PR introduces a Base context, it only provides basic Req/Resp/Data features. This PR mainly moves code. There are still many legacy problems and TODOs in code, leave unrelated changes to future PRs.
* Use User.ID instead of User.Name in ActivityPub API for Person IRI (#23823)wxiaoguang2023-04-041-0/+21
| | | | | | | | Thanks to @trwnh Close #23802 The ActivityPub id is an HTTPS URI that should remain constant, even if the user changes their name.
* Add missing tabs to org projects page (#22705)yp053272023-03-101-9/+0
| | | | | | | | | | | | | | | | | Fixes https://github.com/go-gitea/gitea/issues/22676 Context Data `IsOrganizationMember` and `IsOrganizationOwner` is used to control the visibility of `people` and `team` tab. https://github.com/go-gitea/gitea/blob/2871ea08096cba15546f357d0ec473734ee9d8be/templates/org/menu.tmpl#L19-L40 And because of the reuse of user projects page, User Context is changed to Organization Context. But the value of `IsOrganizationMember` and `IsOrganizationOwner` are not being given. I reused func `HandleOrgAssignment` to add them to the ctx, but may have some unnecessary variables, idk whether it is ok. I found there is a missing `PageIsViewProjects` at create project page.
* Support org/user level projects (#22235)Lunny Xiao2023-01-201-0/+9
| | | | | | | | Fix #13405 <img width="1151" alt="image" src="https://user-images.githubusercontent.com/81045/209442911-7baa3924-c389-47b6-b63b-a740803e640e.png"> Co-authored-by: 6543 <6543@obermui.de>