{"record":{"id":"2fef08e1e682d18c","repo":"xpipe-io/xpipe","slug":"identity-access-scope-is-not-currently-accessible","errorCode":null,"errorMessage":"Identity access scope is not currently accessible","messagePattern":"Identity access scope is not currently accessible","errorType":"validation","errorClass":"ValidationException","httpStatus":null,"severity":"error","filePath":"ext/base/src/main/java/io/xpipe/ext/base/identity/IdentityStore.java","lineNumber":43,"sourceCode":"\n    public abstract DataStoreEntryRef<IdentityStore> getCustomEditTarget();\n\n    public abstract UsernameStrategy getUsername();\n\n    public abstract SecretRetrievalStrategy getPassword();\n\n    public abstract SshIdentityStrategy getSshIdentity();\n\n    @Override\n    public void checkComplete() throws ValidationException {\n        if (getPassword() != null) {\n            getPassword().checkComplete();\n        }\n        if (getSshIdentity() != null) {\n            getSshIdentity().checkComplete();\n        }\n        if (!getAccessScope().isAnyAccessible()) {\n            throw new ValidationException(\"Identity access scope is not currently accessible\");\n        }\n    }\n\n    public abstract String getName();\n}\n","sourceCodeStart":25,"sourceCodeEnd":49,"githubUrl":"https://github.com/xpipe-io/xpipe/blob/d85ca821baa46092a320ebb13546d7240adb74f8/ext/base/src/main/java/io/xpipe/ext/base/identity/IdentityStore.java#L25-L49","documentation":"IdentityStore.checkComplete() validates that an identity store is fully configured. After validating name/password/SSH identity sub-stores, it checks that the identity's access scope refers to at least one currently accessible store entry (accessScope.isAnyAccessible()); if none are accessible it throws a ValidationException. This prevents saving/using identities whose scope points only at unavailable or deleted connections.","triggerScenarios":"Calling checkComplete() on an IdentityStore whose access scope matches zero entries — e.g. all scoped connections were deleted, the scope filter matches nothing, or referenced stores are currently unavailable/offline by accessibility rules.","commonSituations":"Deleting or moving connections that an identity's access scope referenced; an overly restrictive scope filter expression matching no stores; importing an identity config whose scope names don't exist in this workspace.","solutions":["Widen the identity's access scope (or fix its filter) so at least one accessible store entry matches.","Recreate/reconnect the scoped connections so isAnyAccessible() returns true.","Check the scope's matched entries programmatically before checkComplete: if (!getAccessScope().isAnyAccessible()) prompt the user to fix the scope."],"exampleFix":"// before\nidentityStore.checkComplete();\n// after\nif (!identityStore.getAccessScope().isAnyAccessible()) {\n    throw new ValidationException(\"Fix the identity's access scope: no accessible stores selected\");\n}\nidentityStore.checkComplete();","handlingStrategy":"try-catch","validationCode":"if (!identityStore.getAccessScope().isAnyAccessible()) {\n    // prompt user to fix scope before validating\n}","typeGuard":null,"tryCatchPattern":"try {\n    identityStore.checkComplete();\n} catch (ValidationException e) {\n    // access scope matches no accessible stores; ask user to widen scope\n}","preventionTips":["Clean up identity scopes when referenced stores are deleted","Warn users when a scope filter matches zero entries","Validate scope reachability before saving identities"],"tags":["java","validation","access-scope","identity-store"],"backgroundTag":"resource-not-found","analyzedSha":"d85ca821baa46092a320ebb13546d7240adb74f8","analyzedAt":"2026-09-06T14:30:08.251Z","contentChangedAt":"2026-09-06T14:30:08.251Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}