diff --git a/helios_auth/auth_systems/pirateid.py b/helios_auth/auth_systems/pirateid.py
index dade34dbba54794f0f2b2ddd3f497cd8f0f7750b..1f6352de1fc71a5790273d8da6faf02af2f80916 100644
--- a/helios_auth/auth_systems/pirateid.py
+++ b/helios_auth/auth_systems/pirateid.py
@@ -11,6 +11,10 @@ import sys, os, cgi, urllib, urllib2, re
 from xml.etree import ElementTree
 
 from openid import view_helpers
+import json
+import urllib2
+import logging
+
 
 # some parameters to indicate that status updating is not possible
 STATUS_UPDATES = False
@@ -19,15 +23,24 @@ STATUS_UPDATES = False
 LOGIN_MESSAGE = "Log in with my PirateID"
 OPENID_ENDPOINT = 'https://openid.pirati.cz'
 
+AX_REQUIRED_FIELDS = {
+    'firstname' : 'http://axschema.org/namePerson/first',
+    'lastname' : 'http://axschema.org/namePerson/last',
+    'fullname' : 'http://axschema.org/namePerson',
+    'email' : 'http://axschema.org/contact/email',
+    'nickname' : 'http://axschema.org/namePerson/friendly'
+}
+
+
 def get_auth_url(request, redirect_url):
   request.session['pirateid_redirect_url'] = redirect_url
-  url = view_helpers.start_openid(request.session, OPENID_ENDPOINT, redirect_url, redirect_url)
+  url = view_helpers.start_openid(request.session, OPENID_ENDPOINT, redirect_url, redirect_url, ax_required_fields = AX_REQUIRED_FIELDS)
   return url
 
 def get_user_info_after_auth(request):
-  data = view_helpers.finish_openid(request.session, request.GET, request.session['pirateid_redirect_url'])
+  data = view_helpers.finish_openid(request.session, request.GET, request.session['pirateid_redirect_url'], ax_required_fields = AX_REQUIRED_FIELDS)
 
-  return {'type' : 'pirateid', 'user_id': data['ax']['email'][0], 'name': data['ax']['fullname'][0], 'info': {'email': data['ax']['email'][0]}, 'token':{}}
+  return {'type' : 'pirateid', 'user_id': data['ax']['nickname'][0], 'name': data['ax']['fullname'][0], 'info': {'email': data['ax']['email'][0]}, 'token':{}}
     
 def do_logout(user):
   """
@@ -47,9 +60,38 @@ def send_message(user_id, user_name, user_info, subject, body):
   """
   send_mail(subject, body, settings.SERVER_EMAIL, ["%s <%s>" % (user_name, user_id)], fail_silently=False)
   
-def check_constraint(constraint, user_info):
+def generate_constraint(category_id, user):
+  return category_id
+
+def eligibility_category_id(constraint):
+  return constraint
+import pprint
+pp = pprint.PrettyPrinter(indent=4)
+def check_constraint(constraint, user):
   """
   for eligibility
   """
-  pass
+  userinfo = json.load(urllib2.urlopen("https://graph.pirati.cz/user/" + user.user_id))
+  id = userinfo[u'id']
+  usergroups = json.load(urllib2.urlopen("https://graph.pirati.cz/" + id + "/groups"))
+  for usergroup in usergroups:
+    if usergroup[u'id'] == constraint:
+      return True
+  return False
 
+def can_list_categories():
+  """
+  we will use phpbb groups
+  """
+  return True
+
+def list_categories(user):
+  """
+  returns [{id,name},...]
+  """
+  categories = []
+  groups = json.load(urllib2.urlopen("https://graph.pirati.cz/groups"))
+  for group in groups:
+    categories.append({'id': group[u'id'], 'name': group[u'username']})
+  
+  return categories