Skip to content

[pull] main from HeyPuter:main #11

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1,675 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
1675 commits
Select commit Hold shift + click to select a range
fb01bb4
fix: edge case during email change
KernelDeimos Apr 1, 2025
590973f
Update AI.js
jelveh Apr 2, 2025
ddb0443
Update README.md
jelveh Apr 3, 2025
80060e8
Use openrouter for llama models
jelveh Apr 4, 2025
dad72c5
feat: button to remove profile image #1245 (#1246)
EvaNtziou Apr 4, 2025
4fb7727
Update AI.js
jelveh Apr 4, 2025
9a12db2
fix: .startsWith on undefined
KernelDeimos Apr 4, 2025
3e98d13
doc: document driver endpoint
KernelDeimos Apr 7, 2025
fc11eba
fix: puter.js threads error handling
KernelDeimos Apr 7, 2025
95ddfe3
fix: error handling in ThreadService
KernelDeimos Apr 7, 2025
fd910f3
Merge pull request #1169 from shushannap/FAtranslation
jelveh Apr 8, 2025
27fd7b3
fix: broken model parameter
KernelDeimos Apr 8, 2025
592acbc
remove "anthropic/" from model name
jelveh Apr 8, 2025
d0e06e8
dev: add ip to captcha middleware event
KernelDeimos Apr 8, 2025
c8d52b3
style: captcha refresh button
KernelDeimos Apr 8, 2025
0347a38
fix: handle all temp user errors by reloading
KernelDeimos Apr 9, 2025
21bd427
refactor: generalize handling of costly services
KernelDeimos Apr 1, 2025
1f7073e
dev: add services property to extensions
KernelDeimos Apr 2, 2025
d0edb2c
fix: async handling for events
KernelDeimos Apr 2, 2025
0201b93
fix: redundant report-usage call in FakeChatService
KernelDeimos Apr 3, 2025
b9b9c95
dev: minimum cost option
KernelDeimos Apr 3, 2025
1430414
dev: migrate image generation to use cost service
KernelDeimos Apr 3, 2025
82a4ab0
dev: migrate image gen service to use cost service
KernelDeimos Apr 3, 2025
c9d4eec
dev: migrate polly to use cost service
KernelDeimos Apr 3, 2025
8d175bd
doc: test values for PermissiveCreditService
KernelDeimos Apr 3, 2025
b57b907
dev: migrate textract to use cost service
KernelDeimos Apr 4, 2025
fc677ef
dev: migrate judge0 and convertapi to cost service
KernelDeimos Apr 4, 2025
b584801
delete: monthly usage limiting
KernelDeimos Apr 4, 2025
0176a1f
dev: update usages tab
KernelDeimos Apr 4, 2025
2c9bc8f
dev: instant update for usage in settings
KernelDeimos Apr 4, 2025
f0c0693
fix: check funding with no args
KernelDeimos Apr 5, 2025
3f0e990
dev: polling in usage tab
KernelDeimos Apr 5, 2025
d1e4ed7
tmp: temporary timeout to test a theory
KernelDeimos Apr 10, 2025
c7c7f78
Revert "tmp: temporary timeout to test a theory"
KernelDeimos Apr 10, 2025
dc2e406
fix: use event service
KernelDeimos Apr 10, 2025
daa95d8
Update AI.js
jelveh Apr 11, 2025
107adce
dev: disallow "auto" model
KernelDeimos Apr 12, 2025
1b83966
Update signup.js
jelveh Apr 13, 2025
f14b0d1
this didn't work, reverting
jelveh Apr 13, 2025
4ea7754
Update initgui.js
jelveh Apr 13, 2025
c9c4412
Update signup.js
jelveh Apr 14, 2025
2949e16
Update signup.js
jelveh Apr 14, 2025
398b157
Update signup.js
jelveh Apr 14, 2025
2d7ca7f
better error message for invalid emails
jelveh Apr 14, 2025
16b8adc
add new GPT models
jelveh Apr 14, 2025
90d16c3
Add missing openai models
jelveh Apr 14, 2025
42f0ac5
Use OpenAI for `o1-mini1
jelveh Apr 14, 2025
68860d8
Update AI.js
jelveh Apr 14, 2025
cab933f
Update AI.js
jelveh Apr 14, 2025
c732263
Update AI.js
jelveh Apr 16, 2025
19574e5
Update OpenAICompletionService.js
jelveh Apr 16, 2025
b17dc58
remove unused imported modules
jelveh Apr 16, 2025
2cdcc5f
Add `o3` and `o4-mini` models
jelveh Apr 16, 2025
cc72508
dev: remove default system prompt
KernelDeimos Apr 17, 2025
fdfa4cb
dev: log memory info periodically
KernelDeimos Apr 18, 2025
c959ef3
dev: add actor to log context when available
KernelDeimos Apr 18, 2025
c254b39
fix: consistent email check in confirm-email
KernelDeimos Apr 19, 2025
f7b302b
fix: potential log error
KernelDeimos Apr 19, 2025
8ff2e93
tweak: add limit to deleteUser file select
KernelDeimos Apr 19, 2025
7945586
dev: ip geolocation driver (initial development)
KernelDeimos Apr 21, 2025
b80052f
dev: add cost service integration to IPGeoService
KernelDeimos Apr 22, 2025
7e7e289
dev: improve actor logs
KernelDeimos Apr 22, 2025
1764b99
dev: add log messages for cost records
KernelDeimos Apr 22, 2025
9935f5a
dev: simplify calling drivers with matching names
KernelDeimos Apr 22, 2025
790e3bd
dev: puter.call
KernelDeimos Apr 22, 2025
0173284
dev: add support for an "any" interface
KernelDeimos Apr 22, 2025
a3ae608
dev: add injected logger support
KernelDeimos Apr 23, 2025
abf5852
dev: better log support for extensions
KernelDeimos Apr 23, 2025
2b0c8fc
dev: expose Context and ready event to extensions
KernelDeimos Apr 23, 2025
210ecab
tmp: comment out user uuid del
KernelDeimos Apr 24, 2025
b7efa6f
fix: handle problematic null or undefined case
KernelDeimos Apr 24, 2025
89b8c8d
fix: add missing null check
KernelDeimos Apr 24, 2025
78ae6f6
dev: begin implementing driver for newsdata.io
KernelDeimos Apr 24, 2025
c5c17ba
dev: add cost calculation for NewsDataService
KernelDeimos Apr 25, 2025
3856ddc
dev: add default parameters for driver interfaces
KernelDeimos Apr 25, 2025
29dbf3a
dev: URLs to files in public directories
KernelDeimos Apr 28, 2025
ea24154
dev: add WeatherService
KernelDeimos Apr 29, 2025
284b89a
fix: iframe overlap issue (PR 1250)
Niveditarani May 1, 2025
4647e2d
dev: add experimental firebase authentication
KernelDeimos May 1, 2025
75aebd6
fix: sqlite syntax inconsistency
KernelDeimos May 2, 2025
77f3bf2
fix: ui bug in settings window
KernelDeimos May 2, 2025
34787bb
fix: gone
KernelDeimos May 4, 2025
9bf48e7
fix: fallback behavior related to fake-chat service
KernelDeimos May 5, 2025
518449c
fix: share issue
KernelDeimos May 9, 2025
72a4550
fix: cannot create shortcut for shared file
KernelDeimos May 12, 2025
73ab4ba
dev: SI suffix for usage meter
KernelDeimos May 12, 2025
aa049b2
dev: factor out menu items functions in UIItem
KernelDeimos May 12, 2025
3dbe89f
dev: migrate "Create Shortcut" to DRY multi/single
KernelDeimos May 12, 2025
0e0bfd6
Update PuterDialog.js
jelveh May 14, 2025
3290440
dev: document auth and permissions
KernelDeimos May 14, 2025
880760c
ux: use financial units instead of SI for credits
KernelDeimos May 15, 2025
9c14a21
Use `i18n` for "Share With..."
jelveh May 16, 2025
5f14dc7
fix: build error
KernelDeimos May 16, 2025
8dcf75b
Update ui_item.js
jelveh May 16, 2025
0012fd3
Remove unused imports all over the codebase
jelveh May 16, 2025
f942c13
Revert UIItem refactor and fix the position of `Create Shortcut` in t…
jelveh May 16, 2025
39a5997
remove startup chime
jelveh May 16, 2025
73e6830
Add reauthentication for unauthenticated web clients
ProgrammerIn-wonderland May 16, 2025
7f1f98a
Merge pull request #1267 from ProgrammerIn-wonderland/main
jelveh May 16, 2025
f944d76
change initialization order to make wisp socket on first use of netwo…
ProgrammerIn-wonderland May 16, 2025
da66b03
Merge pull request #1268 from ProgrammerIn-wonderland/main
jelveh May 16, 2025
7823fdf
dev: add lazy render option for UIElement
KernelDeimos May 17, 2025
a1b96b7
Allow users to open Settings and specific tabs from a URL
jelveh May 17, 2025
17a77f9
add correct i18n keys for the professional subscription tier
jelveh May 17, 2025
a28cb11
Make the sidebar in settings fixed
jelveh May 17, 2025
dc399d8
Update style.css
jelveh May 17, 2025
ab1cbb2
Remove the Table component
jelveh May 17, 2025
7d88a8b
Update UIWindowTaskManager.js
jelveh May 17, 2025
4862bac
Remove StringView.js
jelveh May 17, 2025
b23d8b5
Remove Spinner.js
jelveh May 17, 2025
d7b9f1e
Remove the Flexer component from the Security tab in settings
jelveh May 17, 2025
84e190c
Revert broken code for deleting profile picture
jelveh May 17, 2025
ea405e5
Update style.css
jelveh May 17, 2025
1c19086
fix: add necessary supporting code for funding update
KernelDeimos May 18, 2025
93645cd
remove redundant console.logs
jelveh May 19, 2025
cecc9f2
fix: pass dedupe_name to mkshortcut via batch
KernelDeimos May 19, 2025
8a0619a
dev: reduce visible log output by default
KernelDeimos May 18, 2025
76b973c
dev: add additional debugging for stream AI errors
KernelDeimos May 19, 2025
8d371b9
dev: remove default token limit from Openrouter
KernelDeimos May 19, 2025
9fdca11
fix auth flow on subsequent loads
ProgrammerIn-wonderland May 20, 2025
95f1656
initial puter.net.fetch implementation
ProgrammerIn-wonderland May 20, 2025
9b3aa25
Merge pull request #1269 from ProgrammerIn-wonderland/main
jelveh May 20, 2025
2a16a25
fix accidental checking of requestHead when responseHead should be ch…
ProgrammerIn-wonderland May 20, 2025
17e5024
Merge pull request #1270 from ProgrammerIn-wonderland/main
jelveh May 20, 2025
af2df13
add support for chunked encoding
ProgrammerIn-wonderland May 21, 2025
7a6df9a
change todo
ProgrammerIn-wonderland May 21, 2025
0d48389
code formatting
ProgrammerIn-wonderland May 21, 2025
aeac687
Merge pull request #1271 from ProgrammerIn-wonderland/main
jelveh May 21, 2025
75f0e04
fix TLS stream premature close issue
ProgrammerIn-wonderland May 21, 2025
cfdf2b3
Merge pull request #1272 from ProgrammerIn-wonderland/main
jelveh May 21, 2025
6af0cdd
Housekeeping: Get rid of puter.http/puter.https
ProgrammerIn-wonderland May 21, 2025
bd8d141
Merge pull request #1273 from ProgrammerIn-wonderland/main
jelveh May 21, 2025
7f69930
Trying out the XSS-safe approach for `puter.print`
jelveh May 22, 2025
f6786b8
introduce the `puter.log()` method
jelveh May 22, 2025
f765180
well, puter.log is taken so going to change puter.print instead
jelveh May 22, 2025
b703b60
omg this is getting out of hand
jelveh May 22, 2025
491cf50
Update index.js
jelveh May 22, 2025
d2cc550
add claude sonnet 4 and claude opus 4
jelveh May 22, 2025
5a6b299
Update AI.js
jelveh May 22, 2025
2cd5b3c
fix: prevent health check from surpressing traces
KernelDeimos May 22, 2025
ca3acf1
fix: wrong symbol in previous commit
KernelDeimos May 22, 2025
fde1a11
dev: add request.will-be-handled event
KernelDeimos May 23, 2025
6363f63
dev: make it possible to handle requests from extension
KernelDeimos May 23, 2025
3408712
dev: pre-auth
KernelDeimos May 23, 2025
dbdebec
dev: disable preauth for now
KernelDeimos May 23, 2025
951bc0e
Only show Puter Dialog when needed
jelveh May 24, 2025
9c78c0d
dev: rename 'puter.log' to 'puter.logger'
KernelDeimos May 26, 2025
1a07180
dev: migrate toolbar labels to i18n
KernelDeimos May 26, 2025
ccdb678
fix: save_account lock timeout
KernelDeimos May 26, 2025
7831d12
chore: sync extension events documentation with backend changes
TanCodeX May 26, 2025
1024fe2
dev: update wisp service for guest tokens
KernelDeimos May 26, 2025
bcbf852
tweak: make auth UI not required for now (#1283)
ProgrammerIn-wonderland May 26, 2025
d1a9bed
Networking: dont sent authentication header if puter.authToken is und…
ProgrammerIn-wonderland May 26, 2025
e227b92
Merge pull request #1284 from ProgrammerIn-wonderland/main
jelveh May 26, 2025
345c628
add the `code` option to `puter.print`
jelveh May 26, 2025
54ec707
support for request bodies
ProgrammerIn-wonderland May 27, 2025
99cf2ca
remove log
ProgrammerIn-wonderland May 27, 2025
a39af18
Merge pull request #1286 from ProgrammerIn-wonderland/main
jelveh May 27, 2025
feb45d1
doc: clarify CostService usage and improve metered services discovera…
TanCodeX May 28, 2025
e9b249c
doc: clarify formatting changes in PRs
KernelDeimos May 30, 2025
5bfd10f
Enable `fullpage_on_loading` by default for new apps
jelveh Jun 2, 2025
a402528
dev: add explicit error for undefined auth token
KernelDeimos Jun 3, 2025
d885ea5
fix: enable and fix date command tests
krikera Jun 3, 2025
bdbe773
doc: add freebsd-specific instructions to first-run-issues.md
atagtm Jun 3, 2025
20ba064
dev: log actor uid with created wisp tokens
KernelDeimos Jun 3, 2025
ca84ed3
dev: meta driver with usages method
KernelDeimos Jun 5, 2025
5c21554
dev: updates for extension-hosted apps
KernelDeimos Jun 6, 2025
4ade2e3
Delete index.html
jelveh Jun 10, 2025
5ed4a28
Delete addlicense.yml
jelveh Jun 10, 2025
af84f60
Delete awesome directory
jelveh Jun 10, 2025
8d6ed96
Delete src/git directory
jelveh Jun 10, 2025
d34fc89
Update README.md
jelveh Jun 10, 2025
2bebc4b
Delete badges directory
jelveh Jun 10, 2025
1652fb4
Delete experiments directory
jelveh Jun 10, 2025
914b077
doc: document config and logging in services
KernelDeimos Jun 11, 2025
152a557
fix: issue using ll_write outside of hl_write
KernelDeimos Jun 16, 2025
24cae79
dev: expose LLOWrite to Puter extensions
KernelDeimos Jun 16, 2025
6315020
dev: regex rules for undefined origin allowed
KernelDeimos Jun 16, 2025
352ec6d
dev: allow apps to sign files in their AppData
KernelDeimos Jun 17, 2025
a8164c1
doc: document event buses and http (unfinished)
KernelDeimos Jun 17, 2025
a4b412d
refactor: IPC/showSaveFilePicker
KernelDeimos Jun 18, 2025
0eb4366
move: handle_same_name_exists to helpers.js
KernelDeimos Jun 18, 2025
771eb37
dev: add save file by moving from appdata
KernelDeimos Jun 18, 2025
8b56d11
clean: move handle_url_save for readability
KernelDeimos Jun 18, 2025
6598798
fix: necessary updates happen for move save too
KernelDeimos Jun 18, 2025
3918917
dev: add appdata_app property to stat response
KernelDeimos Jun 18, 2025
f97a23a
docs(i18n): update Hindi translation of README
Rohanpawar9921 Jun 18, 2025
e5e8807
dev: add some useapi exports to CoreModule
KernelDeimos Jun 20, 2025
5b7b524
fix: add one I missed previous commit
KernelDeimos Jun 20, 2025
5903f1f
fix: incorrect call to APIError from configurable_auth
KernelDeimos Jun 20, 2025
db960d5
fix: add support for new Endpoint usage
KernelDeimos Jun 20, 2025
d3d7e38
Remove the Email, Exec, and Convert modules in Puter.js
jelveh Jun 20, 2025
0accd41
Merge pull request #1311 from Rohanpawar9921/docs/rohan-readme-hindi
jelveh Jun 20, 2025
a7d1bf0
fix: remove dormant condition operand from signup.js
KernelDeimos Jun 20, 2025
52b778a
dev: improve use metering
KernelDeimos Jun 21, 2025
26fb2e7
dev: apparently LLM APIs can't do Math.min
KernelDeimos Jun 21, 2025
3f5de6d
fix: use correct path for openrouter max tokens
KernelDeimos Jun 21, 2025
1a85eec
dev: add value to prompt validation event
KernelDeimos Jun 21, 2025
9235ddd
dev: change message in ai service
KernelDeimos Jun 21, 2025
2e90e8d
fix: streaming in FakeChatService
KernelDeimos Jun 21, 2025
62d7267
dev: enable custom text and fix max_tokens for fake-chat
KernelDeimos Jun 21, 2025
4b5955b
fix: add missing unit conversion step
KernelDeimos Jun 21, 2025
6f6bb5a
Remove Convert, IPGeo, NewsData, Firebase, Mail, Analytics, and Weather
jelveh Jun 21, 2025
ebefca2
dev: add some max_tokens values
KernelDeimos Jun 21, 2025
c3d2ce5
Add `max_tokens` to all models' metadata
jelveh Jun 21, 2025
d9a6a03
tweak: update pricing for 4o-mini
KernelDeimos Jun 22, 2025
52f7906
dev: add cost-calculated event for AI chat
KernelDeimos Jun 22, 2025
ddfd117
tweak: change default model to gpt-4.1-nano
KernelDeimos Jun 22, 2025
4312280
fix: various AI fixes
KernelDeimos Jun 22, 2025
2d9526b
fix: install
KernelDeimos Jun 22, 2025
7896c59
Remove terminal and draw from Launch menu
jelveh Jun 22, 2025
807d7bd
fix: complete Norwegian Nynorsk translation
bilalkhantanoli Jun 22, 2025
60a9be1
fix: update package-lock.json
KernelDeimos Jun 25, 2025
ae4dc23
fix: incorrect pricing
KernelDeimos Jun 27, 2025
c7f4df6
Merge pull request #1314 from bilalkhantanoli/nn-translation-completion
jelveh Jun 27, 2025
1ad113b
Update package-lock.json
jelveh Jun 27, 2025
f46d47d
fix: cost testing model
KernelDeimos Jun 27, 2025
7f6b302
fix: remaining issues with fake-chat/costly
KernelDeimos Jun 27, 2025
0b74743
dev: extension prefix update, doc helper & docs update
XiaochenCui Jun 27, 2025
196f996
Merge branch 'main' into feature/desktop-shortcut-link
jelveh Jun 28, 2025
aeac392
Remove mods and favicons
jelveh Jun 28, 2025
1df874c
remove `refresh_item_container` since it's not used
jelveh Jun 28, 2025
ad62182
Update new_context_menu_item.js
jelveh Jun 28, 2025
c4e3247
Remove some redundant checks and favicon handling logic
jelveh Jun 28, 2025
75d22b0
Update package-lock.json
jelveh Jun 28, 2025
06f5601
Update package.json
jelveh Jun 28, 2025
9b9733c
Merge pull request #1219 from rodrick-mpofu/feature/desktop-shortcut-…
jelveh Jun 28, 2025
ae07a5e
fix: arrow key navigation
Krisss46 Jun 28, 2025
a135c35
Merge pull request #1318 from XiaochenCui/xiaochen/dev
jelveh Jun 28, 2025
9a84776
Fix #1231
jelveh Jun 28, 2025
5fd5017
fix: arrow keys unresponsive when selecting items with offset center …
Krisss46 Jun 29, 2025
2ddd26b
Merge pull request #1319 from Krisss46/fixing-arrow-key-behaviour
jelveh Jun 29, 2025
657a615
Update AI.js
jelveh Jun 29, 2025
b0fdf1f
Implement the basics of a dynamic toolbar
jelveh Jun 29, 2025
0895418
Improve the logic behind hiding the toolbar after clicks and other in…
jelveh Jun 29, 2025
3db99aa
Puter will now support only one type of menubar, and that's the in-wi…
jelveh Jun 29, 2025
b1de89e
Update tr.js
jelveh Jun 29, 2025
54ae9c1
the first time toolbar is shown, keep it open until user hovers over …
jelveh Jun 29, 2025
ad68dde
make window snap animation appear faster
jelveh Jun 30, 2025
40260a9
full support for fullpage mode
jelveh Jun 30, 2025
0864be0
When a window is being dragged don't activate toolbar (duh!)
jelveh Jun 30, 2025
278bb29
better coloring and delay
jelveh Jun 30, 2025
edf00a5
Update style.css
jelveh Jun 30, 2025
9700488
Merge pull request #1324 from HeyPuter/dynamic-toolbar
jelveh Jun 30, 2025
485f9a6
Don't hide the toolbar on mobile and tablet (#1328)
jelveh Jul 1, 2025
2103374
Dynamic toolbar: allow users to customize toolbar sticky (#1330)
jelveh Jul 2, 2025
7285a27
Fix toolbar autohide/hide timing
jelveh Jul 2, 2025
62e786f
Do not activate toolbar when desktop selectable is active
jelveh Jul 2, 2025
aa3032d
Add preliminary support for different voices (#1325)
jelveh Jul 3, 2025
37d09a6
Only support language and voice (ordered) in puter.js `txt2speech`
jelveh Jul 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
fix: permission request 500 errors
As far as I remember, PermissionService was not using APIError because
it was considered to be only for errors from API endpoints and not
internal calls. However, this never made very much sense: APIError is
really more like "error that Puter's backend actually knows how to
handle" at this point; everything should be APIError and APIError should
probably eventually be renamed.
  • Loading branch information
KernelDeimos committed Mar 4, 2025
commit 3276faa5f09163a924316fac1a175ddeb0724e61
30 changes: 26 additions & 4 deletions src/backend/src/services/auth/PermissionService.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/

const APIError = require("../../api/APIError");
const { get_user, get_app } = require("../../helpers");
const BaseService = require("../BaseService");
const { DB_WRITE } = require("../database/consts");
Expand Down Expand Up @@ -401,6 +402,12 @@ class PermissionService extends BaseService {

let app = await get_app({ uid: app_uid });
if ( ! app ) app = await get_app({ name: app_uid });

if ( ! app ) {
throw APIError.create('entity_not_found', null, {
identifier: 'app:' + app_uid,
});
}

const app_id = app.id;

Expand Down Expand Up @@ -466,6 +473,11 @@ class PermissionService extends BaseService {

let app = await get_app({ uid: app_uid });
if ( ! app ) app = await get_app({ name: app_uid });
if ( ! app ) {
throw APIError.create('entity_not_found', null, {
identifier: 'app' + app_uid,
})
}
const app_id = app.id;

// DELETE permission
Expand Down Expand Up @@ -570,7 +582,9 @@ class PermissionService extends BaseService {
permission = await this._rewrite_permission(permission);
const user = await get_user({ username });
if ( ! user ) {
throw new Error('user not found');
throw APIError.create('user_does_not_exist', null, {
username,
})
}

// Don't allow granting permissions to yourself
Expand Down Expand Up @@ -633,7 +647,9 @@ class PermissionService extends BaseService {
const svc_group = this.services.get('group');
const group = await svc_group.get({ uid: gid });
if ( ! group ) {
throw new Error('group not found');
throw APIError.create('entity_not_found', null, {
identifier: 'group:' + gid,
});
}

await this.db.write(
Expand Down Expand Up @@ -688,7 +704,11 @@ class PermissionService extends BaseService {

const user = await get_user({ username });
if ( ! user ) {
throw new Error('user not found');
if ( ! user ) {
throw APIError.create('user_does_not_exist', null, {
username,
})
}
}

// DELETE permission
Expand Down Expand Up @@ -738,7 +758,9 @@ class PermissionService extends BaseService {
const svc_group = this.services.get('group');
const group = await svc_group.get({ uid: gid });
if ( ! group ) {
throw new Error('group not found');
throw APIError.create('entity_not_found', null, {
identifier: 'group:' + gid,
});
}

// DELETE permission
Expand Down