Skip to content

Commit 06edca0

Browse files
committed
fix jwt auth for dynamic models
1 parent fd77aa3 commit 06edca0

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

django_atlassian/models/djira.py

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,20 @@ def __init__(self, *args, **kwargs):
5757
if db_settings['USER'] and db_settings['PASSWORD']:
5858
super(JiraManagerMixin, self).__init__(
5959
server=db_settings['NAME'],
60-
basic_auth=(db_settings['USER'],
61-
db_settings['PASSWORD']))
60+
basic_auth=(
61+
db_settings['USER'],
62+
db_settings['PASSWORD']
63+
)
64+
)
6265
elif db_settings['SECURITY']:
6366
jwt = {
6467
'secret': db_settings['SECURITY'].shared_secret,
65-
'payload': db_settings['SECURITY'].key
68+
'payload': {'iss': db_settings['SECURITY'].key},
6669
}
6770
super(JiraManagerMixin, self).__init__(
6871
server=db_settings['NAME'],
69-
jwt=jwt)
72+
jwt=jwt
73+
)
7074
except Exception as err:
7175
logger.error(err)
7276

@@ -252,12 +256,30 @@ def delete(self):
252256

253257
class JiraIssueModel(JiraIssue):
254258
def __init__(self, *args, **kwargs):
255-
db = self.get_db().connection
256259
options = copy.copy(JIRA.DEFAULT_OPTIONS)
257-
options['server'] = db.uri
258260
session = ResilientSession()
259-
session.auth = (db.user, db.password)
261+
jwt = None
262+
if self.AtlassianMeta.db:
263+
# dynamic models via jira-addon
264+
db = connections.databases[self.AtlassianMeta.db]
265+
options['server'] = db['NAME']
266+
sc = db['SECURITY']
267+
jwt = {
268+
'secret': sc.shared_secret,
269+
'payload': {'iss': sc.key},
270+
}
271+
else:
272+
# static models
273+
db = self.get_db().connection
274+
options['server'] = db.uri
275+
session.auth = (db.user, db.password)
276+
277+
# Jira model init self.key = None, keep a copy & restore
278+
self.jira_key = self.key
260279
super(JiraIssueModel, self).__init__(options, session)
280+
self.key = self.jira_key
281+
if jwt:
282+
self._session = self.__class__.jira._session
261283

262284

263285
class Issue(models.base.Model, JiraIssueModel):
@@ -274,7 +296,7 @@ class Issue(models.base.Model, JiraIssueModel):
274296

275297
def __init__(self, *args, **kwargs):
276298
super(Issue, self).__init__(*args, **kwargs)
277-
self.find(args[0])
299+
self.find(self.jira_key)
278300

279301
def __getattr__(self, name):
280302
if name == 'links':

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
setup(
1111
name='django-atlassian',
12-
version='0.1.3',
12+
version='0.1.4',
1313
packages=find_packages(),
1414
include_package_data=True,
1515
license='MIT License',

0 commit comments

Comments
 (0)