diff --git a/TRM/back/app/functions/Fpost.py b/TRM/back/app/functions/Fpost.py
index 2f07b4a..7d6ccd2 100644
--- a/TRM/back/app/functions/Fpost.py
+++ b/TRM/back/app/functions/Fpost.py
@@ -13,14 +13,44 @@
     def getlist(self):
         results = self.session.query(post.id, post.title,post.status)
         return results
+    
+    def getuserlist(self):
+        results= self.session.query(users.id, users.username, users.role)
+        return results
+
+    def giveadmin(self,userid):
+        res=self.session.query(users).filter(users.id==userid).first()
+        if not res:
+            return False
+        res.role='admin'
+        self.session.commit()
+        return True
+    
+    def giveuser(self,userid):
+        res=self.session.query(users).filter(users.id==userid).first()
+        if not res:
+            return False
+        res.role='user'
+        self.session.commit()
+        return True
+    
+    def givesuperadmin(self,userid):
+        res=self.session.query(users).filter(users.id==userid).first()
+        if not res:
+            return False
+        res.role='superadmin'
+        self.session.commit()
+        return True
+
+
     def getpost(self,postid):
         res=self.session.query(post).filter(post.id==postid).first()
         return res
-    def checkid(self,userid):
+    def checkid(self,userid,status=''):
         res=self.session.query(users).filter(users.id==userid).first()
         if(not res):
             return False
-        if res.role !='superadmin':
+        if res.role !=status:
             return False
         return True
     
