projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch '13546-crunch1-timeout' refs #13546
[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 5856e0c8e8d9a6a2c0b7e0edb9c01e782b3dfc77..a5c5081c40afc97ee40e88e1cd5d2247d6117444 100644
(file)
--- a/
services/api/app/models/authorized_key.rb
+++ b/
services/api/app/models/authorized_key.rb
@@
-1,3
+1,7
@@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
class AuthorizedKey < ArvadosModel
include HasUuid
include KindAndEtag
class AuthorizedKey < ArvadosModel
include HasUuid
include KindAndEtag
@@
-33,13
+37,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|dss) [A-Za-z0-9+\/=\+]+\b/.match(self.public_key)
-
- if not 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
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
- 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