projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '8128-crunch2-auth-api'
[arvados.git]
/
services
/
api
/
app
/
models
/
authorized_key.rb
diff --git
a/services/api/app/models/authorized_key.rb
b/services/api/app/models/authorized_key.rb
index 14db0b112668a036b9e4454c44de78d8038a922f..452cd6967bfa7c40d22f8746cc69c2ea10c7fc89 100644
(file)
--- a/
services/api/app/models/authorized_key.rb
+++ b/
services/api/app/models/authorized_key.rb
@@
-1,5
+1,5
@@
class AuthorizedKey < ArvadosModel
class AuthorizedKey < ArvadosModel
- include
Assign
Uuid
+ include
Has
Uuid
include KindAndEtag
include CommonApiTemplate
before_create :permission_to_set_authorized_user_uuid
include KindAndEtag
include CommonApiTemplate
before_create :permission_to_set_authorized_user_uuid
@@
-33,13
+33,14
@@
class AuthorizedKey < ArvadosModel
def public_key_must_be_unique
if self.public_key
def public_key_must_be_unique
if self.public_key
- key = /ssh-rsa [A-Za-z0-9+\/]+/.match(self.public_key)
-
- if not key
- errors.add(:public_key, "does not appear to be a valid ssh-rsa key")
+ valid_key = SSHKey.valid_ssh_public_key? self.public_key
+
+ if not
valid_
key
+ errors.add(:public_key, "does not appear to be a valid ssh-rsa
or dsa public
key")
else
# Valid if no other rows have this public key
else
# Valid if no other rows have this public key
- if self.class.where('public_key like ?', "%#{key[0]}%").any?
+ if self.class.where('uuid != ? and public_key like ?',
+ uuid || '', "%#{self.public_key}%").any?
errors.add(:public_key, "already exists in the database, use a different key.")
return false
end
errors.add(:public_key, "already exists in the database, use a different key.")
return false
end