]> source.dussan.org Git - gitblit.git/commit
The public key manager can disable writing keys, which hides commands
authorFlorian Zschocke <florian.zschocke@devolo.de>
Tue, 29 Nov 2016 21:08:50 +0000 (22:08 +0100)
committerFlorian Zschocke <florian.zschocke@devolo.de>
Tue, 6 Dec 2016 14:35:23 +0000 (15:35 +0100)
commit40040b656299bfafcaa92b12b916f93e8c5aed1d
tree8f1cb2271a2593fba058e7a1548a80110d394dac
parenta3f9b4f64e52ba1833c3bcb18cf7f05b4d35714e
The public key manager can disable writing keys, which hides commands

Some public key mangers may be read-only, i.e. not allow to add or
delete keys, or to change the key comment or assigned permissions.
In such a case the respective commands should not be available on the
SSH shell and the SSH Keys panel should also not offer the possibility.

The `IPublicKeyManager` gets three new methods, modelled after the
`AuthenticationManager`:
`supportsWritingKeys`, `supportsCommentChanges` and
`supportsPermissionChanges`. They return true if a key manager allows for
keys to be written or updated.
For example the existing `FileKeyManager` will return true for all three
since it allows to store and update keys in a file.
The new `LdapKeyManager` returns false since it only accesses LDAP and
can not add or update any keys in the directory.
A future key manager might get keys from an LDAP directory but still
keep comments and permissions for it in a local copy.

If writing of keys is not supported:
* the welcome shell does not suggest adding a key,
* the `SshKeysDispatcher` does not offer the "add", "remove", "comment" and
  "permission" commands, and
* the SSH keys panel hides the "delete" button in the key list, and the
  "Add Key" form.

The hiding of the "Add key" form is not perfect since the surrounding
div is still shown, but I don't know how to hide it and it didn't look
too bad, either.
src/main/java/com/gitblit/transport/ssh/IPublicKeyManager.java
src/main/java/com/gitblit/transport/ssh/LdapKeyManager.java
src/main/java/com/gitblit/transport/ssh/SshDaemon.java
src/main/java/com/gitblit/transport/ssh/WelcomeShell.java
src/main/java/com/gitblit/transport/ssh/keys/KeysDispatcher.java
src/main/java/com/gitblit/wicket/panels/SshKeysPanel.java