Skip to content

Commit 8885009

Browse files
committed
isCurrentUserBulkadmin(), isCurrentUserProcessadmin(), isCurrentUserDbcreator(), etc creation
1 parent 3e3f73f commit 8885009

File tree

1 file changed

+87
-15
lines changed

1 file changed

+87
-15
lines changed

Mssql.py

+87-15
Original file line numberDiff line numberDiff line change
@@ -268,36 +268,108 @@ def useThisDB(self, name):
268268
return data
269269
else:
270270
logging.debug("We are in the database {0}".format(name))
271-
return True
272-
273-
def isCurrentUserSysadmin(self):
271+
return True
272+
273+
def __isCurrentUser__(self, roleName):
274274
'''
275-
Returns True if current user is SYSADMIN
275+
Returns True if current user has roleName
276276
Otherwise return False
277277
If error, return Exception
278278
'''
279-
REQ_IS_SYSADMIN = "SELECT is_srvrolemember('sysadmin') as issysadmin"
280-
logging.info("Checking if the current user is sysadmin")
281-
data = self.executeRequest(REQ_IS_SYSADMIN,ld=['issysadmin'])
279+
REQ = "SELECT is_srvrolemember('{0}') as role".format(roleName)
280+
logging.info("Checking if the current user is {0}".format(roleName))
281+
data = self.executeRequest(REQ,ld=['role'])
282282
if isinstance(data,Exception):
283-
logging.warning("Impossible to known if the user is sysadmin: {0}".format(data))
283+
logging.warning("Impossible to known if the user has {0} role: {1}".format(roleName, data))
284284
return data
285285
else:
286286
for e in data:
287-
if e['issysadmin']==0:
288-
logging.debug("The current user is not SYSADMIN")
287+
if e['role']==0:
288+
logging.debug("The current user is not {0}".format(roleName))
289289
return False
290-
elif e['issysadmin']==1:
291-
logging.debug("The current user is SYSADMIN")
290+
elif e['role']==1:
291+
logging.debug("The current user is {0}".format(roleName))
292292
return True
293293
else:
294-
msg = "Impossible to known if the user is sysadmin because the result is not 1 or 0. The result is '{0}'".format(e['issysadmin'])
294+
msg = "Impossible to known if the user has {0} because the result is not 1 or 0. The result is '{1}'".format(roleName, e['issysadmin'])
295295
logging.warning(msg)
296296
return ErrorClass(msg)
297-
msg = "Impossible to known if the user is sysadmin because the result is empty"
297+
msg = "Impossible to known if the user has {0} because the result is empty"
298298
logging.warning(msg)
299299
return ErrorClass(msg)
300-
300+
301+
def isCurrentUserSysadmin(self):
302+
'''
303+
Returns True if current user is SYSADMIN
304+
Otherwise return False
305+
If error, return Exception
306+
'''
307+
return self.__isCurrentUser__('sysadmin')
308+
309+
def isCurrentUserServeradmin(self):
310+
'''
311+
Returns True if current user is serveradmin
312+
Otherwise return False
313+
If error, return Exception
314+
'''
315+
return self.__isCurrentUser__('serveradmin')
316+
317+
def isCurrentUserDbcreator(self):
318+
'''
319+
Returns True if current user is dbcreator
320+
Otherwise return False
321+
If error, return Exception
322+
'''
323+
return self.__isCurrentUser__('dbcreator')
324+
325+
def isCurrentUserSetupadmin(self):
326+
'''
327+
Returns True if current user is setupadmin
328+
Otherwise return False
329+
If error, return Exception
330+
'''
331+
return self.__isCurrentUser__('setupadmin')
332+
333+
def isCurrentUserBulkadmin(self):
334+
'''
335+
Returns True if current user is bulkadmin
336+
Otherwise return False
337+
If error, return Exception
338+
'''
339+
return self.__isCurrentUser__('bulkadmin')
340+
341+
def isCurrentUserSecurityadmin(self):
342+
'''
343+
Returns True if current user is securityadmin
344+
Otherwise return False
345+
If error, return Exception
346+
'''
347+
return self.__isCurrentUser__('securityadmin')
348+
349+
def isCurrentUserDiskadmin(self):
350+
'''
351+
Returns True if current user is diskadmin
352+
Otherwise return False
353+
If error, return Exception
354+
'''
355+
return self.__isCurrentUser__('diskadmin')
356+
357+
def isCurrentUserPublic(self):
358+
'''
359+
Returns True if current user is public
360+
Otherwise return False
361+
If error, return Exception
362+
'''
363+
return self.__isCurrentUser__('public')
364+
365+
def isCurrentUserProcessadmin(self):
366+
'''
367+
Returns True if current user is processadmin
368+
Otherwise return False
369+
If error, return Exception
370+
'''
371+
return self.__isCurrentUser__('processadmin')
372+
301373
def getCurrentUser(self):
302374
'''
303375
Returns the current user name

0 commit comments

Comments
 (0)