Skip to content

Commit 6f65014

Browse files
committed
implement match_local_id
Implement MongoDB version of function to look for an existing persistent NameId for a user.
1 parent df9b35d commit 6f65014

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/saml2/mongo_store.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from pymongo.mongo_replica_set_client import MongoReplicaSetClient
66
import pymongo.uri_parser
77
import pymongo.errors
8+
from saml2.saml import NAMEID_FORMAT_PERSISTENT
9+
810
from saml2.eptid import Eptid
911
from saml2.mdstore import InMemoryMetaData
1012
from saml2.mdstore import metadata_modules
@@ -163,6 +165,20 @@ def find_local_id(self, name_id):
163165
return item[self.mdb.primary_key]
164166
return None
165167

168+
def match_local_id(self, userid, sp_name_qualifier, name_qualifier):
169+
"""
170+
Look for an existing persistent NameID matching userid,
171+
sp_name_qualifier and name_qualifier.
172+
"""
173+
filter = {"name_id.sp_name_qualifier": sp_name_qualifier,
174+
"name_id.name_qualifier": name_qualifier,
175+
"name_id.format": NAMEID_FORMAT_PERSISTENT,
176+
}
177+
res = self.mdb.get(value=userid, **filter)
178+
if not res:
179+
return None
180+
return from_dict(res[0]["name_id"], ONTS, True)
181+
166182
def remove_remote(self, name_id):
167183
cnid = to_dict(name_id, MMODS, True)
168184
self.mdb.remove(name_id=cnid)

0 commit comments

Comments
 (0)