mirror of
https://github.com/GSA/notifications-api.git
synced 2026-08-11 09:27:56 -04:00
Refactor ApiKeys.secret and ServiceInboundApi.bearer_token to use the same encryption method and get rid of the duplicate code.
This commit is contained in:
@@ -22,7 +22,6 @@ from app.encryption import (
|
||||
hashpw,
|
||||
check_hash
|
||||
)
|
||||
from app.authentication.utils import get_secret
|
||||
from app import (
|
||||
db,
|
||||
encryption,
|
||||
@@ -301,22 +300,28 @@ class ServiceInboundApi(db.Model, Versioned):
|
||||
service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), index=True, nullable=False, unique=True)
|
||||
service = db.relationship('Service', backref='inbound_api')
|
||||
url = db.Column(db.String(), nullable=False)
|
||||
bearer_token = db.Column(db.String(), nullable=False)
|
||||
_bearer_token = db.Column("bearer_token", db.String(), nullable=False)
|
||||
created_at = db.Column(db.DateTime, default=datetime.datetime.utcnow, nullable=False)
|
||||
updated_at = db.Column(db.DateTime, nullable=True)
|
||||
updated_by = db.relationship('User')
|
||||
updated_by_id = db.Column(UUID(as_uuid=True), db.ForeignKey('users.id'), index=True, nullable=False)
|
||||
|
||||
@property
|
||||
def unsigned_bearer_token(self):
|
||||
return get_secret(self.bearer_token)
|
||||
def bearer_token(self):
|
||||
if self._bearer_token:
|
||||
return encryption.decrypt(self._bearer_token)
|
||||
return None
|
||||
|
||||
@bearer_token.setter
|
||||
def bearer_token(self, bearer_token):
|
||||
if bearer_token:
|
||||
self._bearer_token = encryption.encrypt(str(bearer_token))
|
||||
|
||||
def serialize(self):
|
||||
return {
|
||||
"id": str(self.id),
|
||||
"service_id": str(self.service_id),
|
||||
"url": self.url,
|
||||
"bearer_token": self.bearer_token,
|
||||
"updated_by_id": str(self.updated_by_id),
|
||||
"created_at": self.created_at.strftime(DATETIME_FORMAT),
|
||||
"updated_at": self.updated_at.strftime(DATETIME_FORMAT) if self.updated_at else None
|
||||
@@ -328,7 +333,7 @@ class ApiKey(db.Model, Versioned):
|
||||
|
||||
id = db.Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
||||
name = db.Column(db.String(255), nullable=False)
|
||||
secret = db.Column(db.String(255), unique=True, nullable=False)
|
||||
_secret = db.Column("secret", db.String(255), unique=True, nullable=False)
|
||||
service_id = db.Column(UUID(as_uuid=True), db.ForeignKey('services.id'), index=True, nullable=False)
|
||||
service = db.relationship('Service', backref='api_keys')
|
||||
key_type = db.Column(db.String(255), db.ForeignKey('key_types.name'), index=True, nullable=False)
|
||||
@@ -353,8 +358,15 @@ class ApiKey(db.Model, Versioned):
|
||||
)
|
||||
|
||||
@property
|
||||
def unsigned_secret(self):
|
||||
return get_secret(self.secret)
|
||||
def secret(self):
|
||||
if self._secret:
|
||||
return encryption.decrypt(self._secret)
|
||||
return None
|
||||
|
||||
@secret.setter
|
||||
def secret(self, secret):
|
||||
if secret:
|
||||
self._secret = encryption.encrypt(str(secret))
|
||||
|
||||
|
||||
KEY_TYPE_NORMAL = 'normal'
|
||||
|
||||
Reference in New Issue
Block a user