------------------------------------------------------------------------------
To reply, visit https://hellosplat.com/s/beanbag/tickets/5069/
------------------------------------------------------------------------------

New ticket #5069 by enbyted
For Beanbag, Inc. > Review Board

Status: New
Tags: Priority:Medium, Type:Defect

File attachments:

 * ai-analysis.md
   <https://hellosplat.com/s/beanbag/attachments/1436/>



------------------------------------------------------------------------------
Forgejo integration is broken
==============================================================================

# What version are you running?

Reviewboard 8.0 (docker latest on 10.06.2026)
Forgejo 14.0.5


# What's the URL of the page containing the problem?

/admin/db/scmtools/repository/add/

# What steps will reproduce the problem?

 - Try to add fogejo repository by providing URL, username and password, OR
 - Create a hosting account with pre-created PAT and try to create a forgejo 
repository with it


# What is the expected output? What do you see instead?

I expect to be able to add the repository via the UI

Instead: linking fails, and Forgejo returns 403 `{"message":"Only signed in 
user is allowed to call APIs."}`. This message is Forgejo's response to an 
anonymous API request — i.e. Review Board sent no credentials.

# What operating system are you using? What browser?

macOS Tahoe, Safari

# Please provide any additional information below.

It seems that the Authorization headers are not passed correctly resulting in 
Forgejo responding with (for the first issue - creating the PAT failing):

```
2026-06-10 20:51:58,680 - DEBUG -  - reviewboard.hostingsvcs.base.http - 
[3f8b7855-ff12-4415-9472-d3869a2e4811] Begin: Performing HTTP POST request for 
Forgejo at https://<forgejo>/api/v1/users/bot.reviewboard/tokens
2026-06-10 20:51:58,723 - DEBUG -  - reviewboard.hostingsvcs.base.http - 
[3f8b7855-ff12-4415-9472-d3869a2e4811] End: Performing HTTP POST request for 
Forgejo at https://<forgejo>/api/v1/users/bot.reviewboard/tokens
2026-06-10 20:51:58,724 - DEBUG -  - reviewboard.hostingsvcs.base.http - 
[3f8b7855-ff12-4415-9472-d3869a2e4811] Performing HTTP POST request for Forgejo 
at https://<forgejo>/api/v1/users/bot.reviewboard/tokens took 0.043106 seconds
2026-06-10 20:51:58,724 - ERROR -  - reviewboard.hostingsvcs.forgejo.client - 
[be3bdcb7-507e-4281-a2b2-d8c2e78139d6] HTTP error (code=403) creating API token 
with POST https://<forgejo>/api/v1/users/bot.reviewboard/tokens: 
{"message":"Only signed in user is allowed to call APIs."}
2026-06-10 20:51:58,725 - ERROR -  - reviewboard.hostingsvcs.forgejo.client - 
[be3bdcb7-507e-4281-a2b2-d8c2e78139d6] Unexpected error (HTTP 403) when 
creating API token for user bot.reviewboard on server https://<forgejo>: 
{"message":"Only signed in user is allowed to call APIs."}
2026-06-10 20:51:58,726 - ERROR -  - reviewboard.hostingsvcs.base.forms - 
Unknown error linking hosting account ID=None for hosting service='forgejo', 
username='bot.reviewboard', LocalSite=None
Traceback (most recent call last):
  File 
"/venv/lib/python3.11/site-packages/reviewboard/hostingsvcs/forgejo/client.py", 
line 296, in create_api_token
    error = api.APIError.model_validate_json(data)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/venv/lib/python3.11/site-packages/pydantic/main.py", line 810, in 
model_validate_json
    return cls.__pydantic_validator__.validate_json(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for APIError
url
  Field required [type=missing, input_value={'message': 'Only signed ... 
allowed to call APIs.'}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.14/v/missing
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File 
"/venv/lib/python3.11/site-packages/reviewboard/hostingsvcs/base/forms.py", 
line 534, in authorize
    hosting_account.service.authorize(username=username,
  File 
"/venv/lib/python3.11/site-packages/reviewboard/hostingsvcs/forgejo/service.py",
 line 151, in authorize
    api_token = self.client.create_api_token(
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File 
"/venv/lib/python3.11/site-packages/reviewboard/hostingsvcs/forgejo/client.py", 
line 306, in create_api_token
    raise HostingServiceError(
reviewboard.hostingsvcs.errors.HostingServiceError: Unknown error while 
creating Forgejo API token. See the Review Board server logs for more 
information (error ID be3bdcb7-507e-4281-a2b2-d8c2e78139d6).
```

For the second issue (fetching the repository failing):

```
[2026-06-10 21:19:52 +0000] [20] [DEBUG] POST /admin/db/scmtools/repository/add/
2026-06-10 21:19:52,708 - DEBUG -  - reviewboard.hostingsvcs.forgejo.client - 
Making GET request to https://<forgejo>/api/v1/repos/Elspace/tot2-core
2026-06-10 21:19:52,712 - DEBUG -  - reviewboard.hostingsvcs.base.http - 
[544b44fa-9610-4f46-a9f4-f126fc99c4dc] Begin: Performing HTTP GET request for 
Forgejo at https://<forgejo>/api/v1/repos/Elspace/tot2-core
2026-06-10 21:19:52,754 - DEBUG -  - reviewboard.hostingsvcs.base.http - 
[544b44fa-9610-4f46-a9f4-f126fc99c4dc] End: Performing HTTP GET request for 
Forgejo at https://<forgejo>/api/v1/repos/Elspace/tot2-core
2026-06-10 21:19:52,755 - DEBUG -  - reviewboard.hostingsvcs.base.http - 
[544b44fa-9610-4f46-a9f4-f126fc99c4dc] Performing HTTP GET request for Forgejo 
at https://<forgejo>/api/v1/repos/Elspace/tot2-core took 0.042300 seconds
2026-06-10 21:19:52,756 - ERROR -  - reviewboard.hostingsvcs.forgejo.client - 
HTTP error in API GET https://<forgejo>/api/v1/repos/Elspace/tot2-core for 
repository None: HTTP Error 403: Forbidden
2026-06-10 21:19:52,757 - ERROR -  - reviewboard.hostingsvcs.forgejo.client - 
Unable to parse error response for API GET 
https://<forgejo>/api/v1/repos/Elspace/tot2-core (repository=None): 1 
validation error for APIError
url
  Field required [type=missing, input_value={'message': 'Only signed ... 
allowed to call APIs.'}, input_type=dict]
    For further information visit https://errors.pydantic.dev/2.14/v/missing
2026-06-10 21:19:52,757 - WARNING -  - reviewboard.hostingsvcs.forgejo.client - 
Unexpected error when checking repository with API URL 
https://<forgejo>/api/v1/repos/Elspace/tot2-core: Unknown response from 
Forgejo: {"message":"Only signed in user is allowed to call APIs."}

[2026-06-10 21:19:53 +0000] [20] [DEBUG] Closing connection.
```

Having no clue how this software works I thought I was doing something wrong 
and fed the issues I was facing through Claude. It came up with the following 
patch for docker, for the second issue:

```
docker exec <container name> sed -i "s/'header': {/'headers': {/"   
/venv/lib/python3.11/site-packages/reviewboard/hostingsvcs/forgejo/client.py
```

This allowed me to workaround the problem and create the hosting account like 
this:

```
# docker exec -it <container name> rb-site manage /site shell
>>> from reviewboard.hostingsvcs.models import HostingServiceAccount
>>> from reviewboard.scmtools.crypto_utils import encrypt_password
>>> 
>>> account = HostingServiceAccount.objects.create(
>>>     service_name='forgejo',
>>>     username='bot.reviewboard',
>>>     hosting_url='https://<forgejo>',
>>> )
>>> account.data['api_token'] = encrypt_password('PASTE_RAW_PAT_HERE')
>>> account.save()
>>> 
>>> # sanity check
>>> print(account.service.is_authorized())   # -> True
```

And then add the repository using that account.

Since I already had Claude look into this I asked it to generate analysis + 
suggested fixes in case that is of interest to you.

Thanks for making this software! Though I haven't had a chance of actually 
using it yet it seems like it will solve a lot of my issues.

------------------------------------------------------------------------------

-- 
You received this message because you are subscribed to the Google Groups 
"reviewboard-issues" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/reviewboard-issues/20260610215427.28976.13058%40ip-10-1-54-209.ec2.internal.

Reply via email to