return None
try:
- #usernameldap is from LDAP user form. If it is filled - See portal/homeview.py too
- usernameldap = token['usernameldap']
+ print "ManifoldBackend authenticate()"
+ # Mandatory fields in token
username = token['username']
- password = token['password']
request = token['request']
+ # usernameldap is optional - from LDAP user form.
+ # If it is filled - See portal/homeview.py too
+ if 'usernameldap' in token:
+ usernameldap = token['usernameldap']
+ else:
+ usernameldap = None
+ password = token['password']
# if data are not from LDAP form then normal (local) login
if not usernameldap:
+ print "not userldap ManifoldBackend authenticate()"
auth = {'AuthMethod': 'password', 'Username': username, 'AuthString': password}
api = ManifoldAPI(auth)
sessions_result = api.forward(Query.create('local:session').to_dict())
# Edelberto LDAP authentication
# if data are from LDAP form, so
else:
+ print "userldap ManifoldBackend authenticate()"
# XXX UGLY
- # Needing to create an specif entries at settings.py (or myslice.ini) for these vars
+ # Needing to create an specific entries at settings.py (or myslice.ini) for these vars
##################################################
# Edelberto - UFF - esilva@ic.uff.br
# v1 - ldap authentication module
#IA_JS_FORMAT = "<script type='text/javascript' src='{URL}' />"
# put stuff under static/
# IA_MEDIA_PREFIX = '/code/'
+
+SESSION_ENGINE = 'django.contrib.sessions.backends.file'
+
import portal.dashboardview
import portal.homeview
+import plugins.cafe.edelberto
+
home_view=portal.homeview.HomeView.as_view()
dashboard_view=portal.dashboardview.DashboardView.as_view()
platforms_view=portal.platformsview.PlatformsView.as_view()
# Shibboleth - Edelberto
urlpatterns += patterns('',
- #url(r'^cafe/', 'plugins.cafe.edelberto.EdelbertoView.as_view()'),
- url(r'^cafe/', 'plugins.cafe.edelberto.index'),
+ url(r'^cafe/', plugins.cafe.edelberto.EdelbertoView.as_view()),
+ #url(r'^cafe/', 'plugins.cafe.edelberto.index'),
)
#!/usr/bin/env python
+from portal.models import PendingUser
+#from portal.actions import create_pending_user
+# Edelberto - LDAP
+from portal.actions import create_pending_user, ldap_create_user
+
#Edelberto from manifoldauth
import os,sys
import subprocess
import getpass
from hashlib import md5
import time
-from random import Random
+from random import randint
import crypt
import re
#from manifold.manifold.core.router import Router
from manifold.core.query import Query
from manifoldapi.manifoldapi import execute_admin_query
-from portal.actions import manifold_add_user, manifold_add_account, manifold_update_account
+#from portal.actions import manifold_add_user, manifold_add_account, manifold_update_account
+from portal.actions import manifold_add_account, manifold_add_reference_user_accounts, sfa_create_user, create_pending_user
from manifold.core.query import Query
# add user to manifold
+from portal.models import PendingUser
+
from django.views.generic import View
from django.core.context_processors import csrf
-#from django.http import HttpResponseRedirect
from django.contrib.auth import authenticate, login, logout
from django.template import RequestContext
from django.shortcuts import render_to_response
def index(request):
#class EdelbertoView (View):
-# =================== Old code - to validate =================
- '''
- ip = "<html><body>"
- ip += "cn: " + request.META['Shib-inetOrgPerson-cn'] + "</br>"
- ip += "sn: " + request.META['Shib-inetOrgPerson-sn'] + "</br>"
- ip += "eppn: " + request.META['Shib-eduPerson-eduPersonPrincipalName'] + "</br>"
- ip += "mail: " + request.META['Shib-inetOrgPerson-mail'] + "</br>"
- ip += "Affiliation br: " + request.META['Shib-brEduPerson-brEduAffiliationType'] + "</br>"
- ip += "Affiliation edu: " + request.META['Shib-eduPerson-eduPersonAffiliation'] + "</br>"
- ip += "Auth-Method: " + request.META['Shib-Authentication-Method'] + "</br>"
- ip += "Identity Provider: " + request.META['Shib-Identity-Provider'] + "</br>"
- ip += "Application ID: " + request.META['Shib-Application-ID'] + "</br>"
- ip += "Session ID: " + request.META['Shib-Session-ID'] + "</br>"
- '''
+# XXX We use cookie!
# Test cookie support
if request.session.test_cookie_worked():
#if session.test_cookie_worked():
# return HttpResponse(ip)
- # expose this so we can mention the backend URL on the welcome page
- def default_env (self):
- config=Config()
- return {
- 'MANIFOLD_URL':config.manifold_url(),
- }
-
- #def post (self,request):
- # env = self.default_env()
- #username = request.POST.get('username')
- #password = request.POST.get('password')
- # if we use ABAC based on 'aff'
- #if 'aff' in request.session.keys():
- aff = request.session["aff"]
- # if we use ABAC - based on 'aff'
- #if aff == "student":
- # XXX It's only to test the association of admin and esilva@uff.br
- if request.session["eppn"] == 'esilva@uff.br':
- username = 'admin'
- password = 'admin'
- # For all users
- else:
- username = request.session["mail"]
- # this is ugly. We generate a simple password with merge of mail and a string.
- password = request.session["mail"] + "fibre2013"
-
- username = username.replace('"','').strip()
- password = password.replace('"','').strip()
- # pass request within the token, so manifold session key can be attached to the request session.
- token = {'username': username, 'password': password, 'request': request}
-
- # our authenticate function returns either
+ # XXX It's only to test the association of pi and esilva@uff.br
+ if request.session["eppn"] == 'esilva@uff.br':
+ username = 'rezende@ufrj'
+ password = 'fibre2014'
+ # pass request within the token, so manifold session key can be attached to the request session.
+ token = {'username': username, 'password': password, 'request': request}
+ # . a ManifoldResult - when something has gone wrong, like e.g. backend is unreachable
+ # For all users - Verifying if he exists in MySlice/Manifold
+ else:
+ username = request.session["mail"]
+ # this is ugly. We generate a simple password merging mail "fibre" and sn.
+ password = request.session["mail"] + "fibre" + request.session["sn"]
+
+ # If we have " we remove
+ username = username.replace('"','').strip()
+ password = password.replace('"','').strip()
+
+ # pass request within the token, so manifold session key can be attached to the request session.
+ token = {'username': username, 'password': password, 'request': request}
# . a ManifoldResult - when something has gone wrong, like e.g. backend is unreachable
# . a django User in case of success
# . or None if the backend could be reached but the authentication failed
- auth_result = authenticate(token=token)
+ auth_result = authenticate(token=token)
+ print auth_result
+ print token
# high-level errors, like connection refused or the like
-
- if isinstance (auth_result, ManifoldResult):
- manifoldresult = auth_result
- # let's use ManifoldResult.__repr__
- '''
- env['state']="%s"%manifoldresult
- return render_to_response('home-view.html',env, context_instance=RequestContext(request))
- '''
- htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://sp-fibre.cafeexpresso.rnp.br/login-ok\" />"
- return HttpResponse (htm)
- # user was authenticated at the backend
- elif auth_result is not None:
- user=auth_result
-
- if user.is_active:
- print "LOGGING IN"
- login(request, user)
- htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://sp-fibre.cafeexpresso.rnp.br/login-ok\" />"
- #return HttpResponseRedirect ('/login-ok')
- return HttpResponse (htm)
- else:
- env['state'] = "Your account is not active, please contact the site admin."
- return render_to_response('home-view.html',env, context_instance=RequestContext(request))
- # otherwise
- else:
- '''
- magic = "$1$"
- password = password
- # Generate a somewhat unique 8 character salt string
- salt = str(time.time()) + str(Random().random())
- salt = md5(salt).hexdigest()[:8]
-
- if len(password) <= len(magic) or password[0:len(magic)] != magic:
- password = crypt.crypt(password.encode('latin1'), magic + salt + "$")
-
- user_params = {
- 'email': username,
- 'password': password
- }
- query = Query(action='create', object='local:user', params=user_params)
-
-
- # Instantiate a TopHat router
- with Router() as router:
- router.forward(query)
- '''
- #myArgs=[username,password]
- #os.spawnlp(os.P_WAIT,'/tmp/adduser.py', username, password, '/bin/bash/'i)
- #command = '/var/www/manifold/manifold/bin/adduser.py ' + username + ' ' + password
- #command = 'ls -la'
- #args = shlex.split(command)
- #p = subprocess.Popen(args, stdin=subprocess.PIPE).communicate()[0]
- #print command
- #print args
- #print p
- #env['state'] = "Now your CAFe user is associated to your MySlice account - Please logging in CAFe again."
- #return render_to_response('home-view.html',env, context_instance=RequestContext(request))
- user_params = { 'email': username, 'password': password }
- manifold_add_user(request,user_params)
-
- #query = Query().get('user').filter_by('email', '=', username).select('user_id')
- #user = execute_admin_query(request,query)
- #print "USER_ID:" + user
- #user_id = user['user_id']
- #user_id = user[0]
- #print user_id
- #splitmail = username.split("@")[0]
- #user_params = { 'user': splitmail, 'platform': 'myslice' }
- #user_params = { 'user_id': '2', 'platform_id': '2' }
- #manifold_add_account(request,user_params)
-
- # Ugly! Forcing the association of user and platform. This need to be automatic.
- splitmail = username.split("@")[0]
- user = splitmail.replace('"','').strip()
- hrn = "fibrebr.dummy." + user
- user_hrn = '{ "user_hrn": "'+ hrn +'" }'
- #user_params = { 'config': user_hrn, 'auth_type': 'managed' }
- user_params2 = { 'user_id': '2', 'platform_id': '2', 'config': user_hrn, 'auth_type': 'managed' }
- manifold_add_account(request,user_params2)
-
- ##user_id = '3'
- #manifold_update_account(request,user_params)
- html = "Now your CAFe user is associated with a MySlice account - Please login in CAFe again."
- return HttpResponse(html)
-
- # If we use ABAC - based on 'aff'
- # else:
- # #env['state'] = "Your affiliation (" + request.session["aff"] + ") at CAFe is not accepted."
- # html = "Your CAFe affiliation (" + request.session["aff"] + ") is not accepted. <br> Only \"student\" affiliation."
- # return HttpResponse(html)
- #return render_to_response('home-view.html',env, context_instance=RequestContext(request))
-
-
- # login-ok sets state="Welcome to MySlice" in urls.py
- def get (self, request, state=None):
- env = self.default_env()
- env['username']=the_user(request)
- env['topmenu_items'] = topmenu_items(None, request)
- if state: env['state'] = state
- elif not env['username']: env['state'] = "Please sign in"
- return HttpResponseRedirect ('/login-ok')
- #return render_to_response('home-view.html',env, context_instance=RequestContext(request))
+
+ if isinstance (auth_result, ManifoldResult):
+ manifoldresult = auth_result
+ htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://sp-fibre.cafeexpresso.rnp.br/login-ok\" />"
+ return HttpResponse (htm)
+ # user was authenticated at the backend
+ elif auth_result is not None:
+ user=auth_result
+
+ # Verifying if user is active to logging in
+ if user.is_active:
+ print "LOGGING IN"
+ login(request, user)
+ htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://sp-fibre.cafeexpresso.rnp.br/login-ok\" />"
+ #return HttpResponseRedirect ('/login-ok')
+ return HttpResponse (htm)
+ else:
+ # Today all CAFe accounts are actived
+ htm = "Your account is not active, please contact the site admin."
+ return HttpResponse (htm)
+
+
+ # otherwise
+ # Creating the user at manifold, myslice and sfa
+ else:
+ user_params = { 'email': username, 'password': password }
+ user_request = {}
+
+ user_request['auth_type'] = 'managed'
+
+ # XXX Common code, dependency ?
+ from Crypto.PublicKey import RSA
+ private = RSA.generate(1024)
+
+ # Example: private_key = '-----BEGIN RSA PRIVATE KEY-----\nMIIC...'
+ # Example: public_key = 'ssh-rsa AAAAB3...'
+ user_request['private_key'] = private.exportKey()
+ user_request['public_key'] = private.publickey().exportKey(format='OpenSSH')
+
+ splitmail = username.split("@")[0]
+ user = splitmail.replace('"','').strip()
+ hrn = "fibre." + user + str(randint(1,100000))
+
+ user_request['user_hrn'] = hrn
+
+ user_request['first_name'] = request.session['cn']
+ user_request['last_name'] = request.session['sn']
+ user_request['authority_hrn'] = "fibre"
+ user_request['email'] = username
+ user_request['password'] = password
+ user_request['public_key'] = user_request['public_key']
+ user_request['private_key'] = user_request['private_key']
+
+ # Verify in django
+ if PendingUser.objects.filter(email__iexact = user_request['email']):
+ htm = "Erro - User with same email from CAFe exists in Django"
+ # verify in manifol
+ user_query = Query().get('local:user').select('user_id','email')
+ user_details = execute_admin_query(request, user_query)
+ for user_detail in user_details:
+ if user_detail['email'] == user_request['email']:
+ htm = "Erro - user exist in SFA Registry"
+ try:
+ if user_detail['user_hrn'] == user_request['user_hrn']:
+ htm = "Erro - user with the same hrn in SFA Registry"
+ except:
+ continue
+
+
+ create_pending_user(user_request, user_request, user_detail)
+
+ return HttpResponse(htm)
+ return HttpResponse(htm)
#!/usr/bin/env python
+
+# XXX We need to clean it!!
from portal.models import PendingUser
-#from portal.actions import create_pending_user
-# Edelberto - LDAP
-from portal.actions import create_pending_user, ldap_create_user
#Edelberto from manifoldauth
import os,sys
import re
#from manifold.manifold.core.router import Router
from manifold.core.query import Query
-from manifoldapi.manifoldapi import execute_admin_query
+from manifoldapi.manifoldapi import execute_admin_query, execute_query
#from portal.actions import manifold_add_user, manifold_add_account, manifold_update_account
-from portal.actions import manifold_add_account, manifold_add_reference_user_accounts, sfa_create_user, create_pending_user
+#from portal.actions import manifold_add_account, manifold_add_reference_user_accounts, sfa_create_user, create_pending_user
+from portal.actions import create_pending_user, create_user
from manifold.core.query import Query
# add user to manifold
-from portal.models import PendingUser
+from unfold.loginrequired import FreeAccessView
from django.views.generic import View
from django.core.context_processors import csrf
from django.template import RequestContext
from django.shortcuts import render_to_response
-from manifold.manifoldresult import ManifoldResult
+from manifoldapi.manifoldresult import ManifoldResult, ManifoldCode, ManifoldException
from ui.topmenu import topmenu_items, the_user
from myslice.configengine import ConfigEngine
#from django.template import RequestContext
from django.contrib.sessions.backends.db import SessionStore
-def index(request):
-#class EdelbertoView (View):
-
-# XXX We use cookie!
-# Test cookie support
- if request.session.test_cookie_worked():
- #if session.test_cookie_worked():
- return HttpResponse("Please enable cookies and try again.")
- #return
- print "Please enable cookies and try again."
- else:
- request.session['cn'] = request.META['Shib-inetOrgPerson-cn']
- request.session['sn'] = request.META['Shib-inetOrgPerson-sn']
- request.session['mail'] = request.META['Shib-inetOrgPerson-mail']
- request.session['eppn'] = request.META['Shib-eduPerson-eduPersonPrincipalName']
- #request.session['aff'] = request.META['Shib-brEduPerson-brEduAffiliationType']
- request.session['aff'] = request.META['Shib-eduPerson-eduPersonAffiliation']
- request.session['shib'] = request.META['Shib-Session-ID']
+from portal.homeview import HomeView
- if 'mail' in request.session.keys():
- print "Cookie: OK -> Content: cn:" + request.session["cn"] + " sn " +request.session["sn"] + " mail: " + request.session["mail"] + " eppn: " + request.session["eppn"]
- #ip += "Cookie: OK -> Content: cn:" + request.session["cn"] + " mail: " + request.session["mail"] + " eppn: " + request.session["eppn"] + "</body></html>"
+# View for authenticate the user
+class EdelbertoView (HomeView):
+ def get(self,request):
+ env = self.default_env()
+ env['theme'] = self.theme
+ print "EdelbertoView"
+
+ # XXX We use cookie!
+ # Test cookie support
+ if request.session.test_cookie_worked():
+ #if session.test_cookie_worked():
+ return HttpResponse("Please enable cookies and try again.")
+ #return
+ print "Please enable cookies and try again."
else:
- print "Cookie: nothing/clear"
- #ip += "Cookie: nothing/clear </body></html>"
+ request.session['cn'] = request.META['Shib-inetOrgPerson-cn']
+ request.session['sn'] = request.META['Shib-inetOrgPerson-sn']
+ request.session['mail'] = request.META['Shib-inetOrgPerson-mail']
+ request.session['eppn'] = request.META['Shib-eduPerson-eduPersonPrincipalName']
+ #request.session['aff'] = request.META['Shib-brEduPerson-brEduAffiliationType']
+ request.session['aff'] = request.META['Shib-eduPerson-eduPersonAffiliation']
+ request.session['shib'] = request.META['Shib-Session-ID']
- # return HttpResponse(ip)
-
-
- # XXX It's only to test the association of pi and esilva@uff.br
+ if 'mail' in request.session.keys():
+ print "Cookie: OK -> Content: cn:" + request.session["cn"] + " sn " +request.session["sn"] + " mail: " + request.session["mail"] + " eppn: " + request.session["eppn"]
+ #ip += "Cookie: OK -> Content: cn:" + request.session["cn"] + " mail: " + request.session["mail"] + " eppn: " + request.session["eppn"] + "</body></html>"
+ else:
+ print "Cookie: nothing/clear"
+ #ip += "Cookie: nothing/clear </body></html>"
+ # Cookies test finish
+ # return HttpResponse(ip)
+
+ # expose this so we can mention the backend URL on the welcome page
+ def default_env (self):
+ return {
+ 'MANIFOLD_URL':ConfigEngine().manifold_url(),
+ }
+
+
+ # XXX It's only to test the association of pi and esilva@uff.br
if request.session["eppn"] == 'esilva@uff.br':
username = 'rezende@ufrj'
password = 'fibre2014'
- # pass request within the token, so manifold session key can be attached to the request session.
- token = {'username': username, 'password': password, 'request': request}
- # . a ManifoldResult - when something has gone wrong, like e.g. backend is unreachable
- # For all users - Verifying if he exists in MySlice/Manifold
+ print "eppn OK"
+ # If the user is not esilva@uff.br, so run the normal authentication
else:
username = request.session["mail"]
- # this is ugly. We generate a simple password merging mail "fibre" and sn.
+ # XXX this is ugly. We generate a simple password merging mail "fibre" and sn.
password = request.session["mail"] + "fibre" + request.session["sn"]
-
+
# If we have " we remove
username = username.replace('"','').strip()
password = password.replace('"','').strip()
-
- # pass request within the token, so manifold session key can be attached to the request session.
- token = {'username': username, 'password': password, 'request': request}
+
+ # pass request within the token, so manifold session key can be attached to the request session.
+ token = {'username': username, 'password': password, 'request': request}
+
# . a ManifoldResult - when something has gone wrong, like e.g. backend is unreachable
# . a django User in case of success
# . or None if the backend could be reached but the authentication failed
auth_result = authenticate(token=token)
- print auth_result
- print token
- # high-level errors, like connection refused or the like
+ # XXX Error - We need a toke, not send parameters directly!
+ #auth_result = authenticate(username='rezende@ufrj', password='fibre2014', request=request)
+ print "Auth Result CAFe"
+ print type(auth_result)
+ # high-level errors, like connection refused or the like
+
if isinstance (auth_result, ManifoldResult):
manifoldresult = auth_result
- htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://sp-fibre.cafeexpresso.rnp.br/login-ok\" />"
- return HttpResponse (htm)
+ #htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://200.130.15.182/login\" />"
+ htm = "not authenticated"
+ return HttpResponse (htm)
# user was authenticated at the backend
elif auth_result is not None:
user=auth_result
-
+
# Verifying if user is active to logging in
if user.is_active:
print "LOGGING IN"
login(request, user)
- htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://sp-fibre.cafeexpresso.rnp.br/login-ok\" />"
+
+ #if request.user.is_authenticated():
+ # env['person'] = username
+ # env['username'] = username
+ #else:
+ # env['person'] = None
+
+ htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://200.130.15.182/login\" />"
#return HttpResponseRedirect ('/login-ok')
return HttpResponse (htm)
+ #return render_to_response(self.template,env, context_instance=RequestContext(request))
else:
# Today all CAFe accounts are actived
htm = "Your account is not active, please contact the site admin."
return HttpResponse (htm)
-
-
+
# otherwise
# Creating the user at manifold, myslice and sfa
+ # XXX It's the first of CAFe user in MySlice!
else:
+ # Get the username and password
user_params = { 'email': username, 'password': password }
user_request = {}
-
+
+ # set the auth_type = managed
user_request['auth_type'] = 'managed'
-
- # XXX Common code, dependency ?
+
+ # XXX Generating the key pairs for CAFe user
from Crypto.PublicKey import RSA
private = RSA.generate(1024)
-
+
# Example: private_key = '-----BEGIN RSA PRIVATE KEY-----\nMIIC...'
# Example: public_key = 'ssh-rsa AAAAB3...'
user_request['private_key'] = private.exportKey()
user_request['public_key'] = private.publickey().exportKey(format='OpenSSH')
-
+
+ # Generate a HRN different for all users (plus random int)
+ # Getting the username
splitmail = username.split("@")[0]
+ # Getting the organization. The same of authority
+ # testbed name
+ org = username.split('@')[1]
+ o = org.split('.')[-2]
user = splitmail.replace('"','').strip()
- hrn = "fibre." + user + str(randint(1,100000))
-
- user_request['user_hrn'] = hrn
-
+ # Finally creating the HRN
+ hrn = "fibre." + o + "." + user + str(randint(1,100000))
+
+ user_request['user_hrn'] = hrn
+
+ # Others fields we can get from CAFe database
user_request['first_name'] = request.session['cn']
user_request['last_name'] = request.session['sn']
- user_request['authority_hrn'] = "fibre"
+ # We need to put the user below its authority
+ user_request['authority_hrn'] = "fibre." + o
user_request['email'] = username
user_request['password'] = password
user_request['public_key'] = user_request['public_key']
user_request['private_key'] = user_request['private_key']
-
- # Verify in django
+
+ # Verify in django if user exist
if PendingUser.objects.filter(email__iexact = user_request['email']):
htm = "Erro - User with same email from CAFe exists in Django"
- # verify in manifol
+ # verify in manifold and SFA if user exist
user_query = Query().get('local:user').select('user_id','email')
user_details = execute_admin_query(request, user_query)
for user_detail in user_details:
try:
if user_detail['user_hrn'] == user_request['user_hrn']:
htm = "Erro - user with the same hrn in SFA Registry"
- except:
+ except:
continue
-
-
+
+ # first we create a uer with pending flag
create_pending_user(user_request, user_request, user_detail)
-
+ # after we enable this user and put in SFA
+ create_user(user_request, user_request)
+
+ htm = "Now your CAFe user is associated with a MySlice account - Please return to the home and log in CAFe again."
return HttpResponse(htm)
- return HttpResponse(htm)
+++ /dev/null
-#!/usr/bin/env python
-
-#Edelberto from manifoldauth
-import os,sys
-import subprocess
-import shlex
-import getpass
-from hashlib import md5
-import time
-from random import Random
-import crypt
-
-import re
-#from manifold.manifold.core.router import Router
-from manifold.core.query import Query
-from manifold.manifoldapi import execute_admin_query
-from portal.actions import manifold_add_user, manifold_add_account, manifold_update_account
-from manifold.core.query import Query
-# add user to manifold
-
-from django.views.generic import View
-from django.core.context_processors import csrf
-#from django.http import HttpResponseRedirect
-from django.contrib.auth import authenticate, login, logout
-from django.template import RequestContext
-from django.shortcuts import render_to_response
-
-from manifold.manifoldresult import ManifoldResult
-from ui.topmenu import topmenu_items, the_user
-from myslice.config import Config
-
-#from django.http import HttpResponse HttpResponseRedirect
-from django.http import HttpResponse
-#from django.http import HttpResponseRedirect
-#from django.template import RequestContext
-from django.contrib.sessions.backends.db import SessionStore
-
-def index(request):
-#class EdelbertoView (View):
-
-# =================== Old code - to validate =================
- '''
- ip = "<html><body>"
- ip += "cn: " + request.META['Shib-inetOrgPerson-cn'] + "</br>"
- ip += "sn: " + request.META['Shib-inetOrgPerson-sn'] + "</br>"
- ip += "eppn: " + request.META['Shib-eduPerson-eduPersonPrincipalName'] + "</br>"
- ip += "mail: " + request.META['Shib-inetOrgPerson-mail'] + "</br>"
- ip += "Affiliation br: " + request.META['Shib-brEduPerson-brEduAffiliationType'] + "</br>"
- ip += "Affiliation edu: " + request.META['Shib-eduPerson-eduPersonAffiliation'] + "</br>"
- ip += "Auth-Method: " + request.META['Shib-Authentication-Method'] + "</br>"
- ip += "Identity Provider: " + request.META['Shib-Identity-Provider'] + "</br>"
- ip += "Application ID: " + request.META['Shib-Application-ID'] + "</br>"
- ip += "Session ID: " + request.META['Shib-Session-ID'] + "</br>"
- '''
-# Test cookie support
- if request.session.test_cookie_worked():
- #if session.test_cookie_worked():
- return HttpResponse("Please enable cookies and try again.")
- #return
- print "Please enable cookies and try again."
- else:
- request.session['cn'] = request.META['Shib-inetOrgPerson-cn']
- request.session['mail'] = request.META['Shib-inetOrgPerson-mail']
- request.session['eppn'] = request.META['Shib-eduPerson-eduPersonPrincipalName']
- #request.session['aff'] = request.META['Shib-brEduPerson-brEduAffiliationType']
- request.session['aff'] = request.META['Shib-eduPerson-eduPersonAffiliation']
- request.session['shib'] = request.META['Shib-Session-ID']
-
- if 'mail' in request.session.keys():
- print "Cookie: OK -> Content: cn:" + request.session["cn"] + " mail: " + request.session["mail"] + " eppn: " + request.session["eppn"]
- #ip += "Cookie: OK -> Content: cn:" + request.session["cn"] + " mail: " + request.session["mail"] + " eppn: " + request.session["eppn"] + "</body></html>"
- else:
- print "Cookie: nothing/clear"
- #ip += "Cookie: nothing/clear </body></html>"
-
- # return HttpResponse(ip)
-
-
- # expose this so we can mention the backend URL on the welcome page
- def default_env (self):
- config=Config()
- return {
- 'MANIFOLD_URL':config.manifold_url(),
- }
-
- #def post (self,request):
- # env = self.default_env()
- #username = request.POST.get('username')
- #password = request.POST.get('password')
- if 'aff' in request.session.keys():
- aff = request.session["aff"]
- if aff == "student":
- if request.session["eppn"] == 'esilva@uff.br':
- username = 'admin'
- password = 'fibre2013'
- else:
- username = request.session["mail"]
- password = request.session["mail"] + "fibre2013"
- username = username.replace('"','').strip()
- password = password.replace('"','').strip()
- # pass request within the token, so manifold session key can be attached to the request session.
- token = {'username': username, 'password': password, 'request': request}
-
- # our authenticate function returns either
- # . a ManifoldResult - when something has gone wrong, like e.g. backend is unreachable
- # . a django User in case of success
- # . or None if the backend could be reached but the authentication failed
- auth_result = authenticate(token=token)
- # high-level errors, like connection refused or the like
- if isinstance (auth_result, ManifoldResult):
- manifoldresult = auth_result
- # let's use ManifoldResult.__repr__
- env['state']="%s"%manifoldresult
- return render_to_response('home-view.html',env, context_instance=RequestContext(request))
- # user was authenticated at the backend
- elif auth_result is not None:
- user=auth_result
- if user.is_active:
- print "LOGGING IN"
- login(request, user)
- htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://sp-php.cafeexpresso.rnp.br/login-ok\" />"
- #return HttpResponseRedirect ('/login-ok')
- return HttpResponse (htm)
- else:
- env['state'] = "Your account is not active, please contact the site admin."
- return render_to_response('home-view.html',env, context_instance=RequestContext(request))
- # otherwise
- else:
- '''
- magic = "$1$"
- password = password
- # Generate a somewhat unique 8 character salt string
- salt = str(time.time()) + str(Random().random())
- salt = md5(salt).hexdigest()[:8]
-
- if len(password) <= len(magic) or password[0:len(magic)] != magic:
- password = crypt.crypt(password.encode('latin1'), magic + salt + "$")
-
- user_params = {
- 'email': username,
- 'password': password
- }
- query = Query(action='create', object='local:user', params=user_params)
-
-
- # Instantiate a TopHat router
- with Router() as router:
- router.forward(query)
- '''
- #myArgs=[username,password]
- #os.spawnlp(os.P_WAIT,'/tmp/adduser.py', username, password, '/bin/bash/'i)
- #command = '/var/www/manifold/manifold/bin/adduser.py ' + username + ' ' + password
- #command = 'ls -la'
- #args = shlex.split(command)
- #p = subprocess.Popen(args, stdin=subprocess.PIPE).communicate()[0]
- #print command
- #print args
- #print p
- #env['state'] = "Now your CAFe user is associated to your MySlice account - Please logging in CAFe again."
- #return render_to_response('home-view.html',env, context_instance=RequestContext(request))
- user_params = { 'email': username, 'password': password }
- manifold_add_user(request,user_params)
-
- #query = Query().get('user').filter_by('email', '=', username).select('user_id')
- #user = execute_admin_query(request,query)
- #print "USER_ID:" + user
- #user_id = user['user_id']
- #user_id = user[0]
- #print user_id
- #splitmail = username.split("@")[0]
- #user_params = { 'user': splitmail, 'platform': 'myslice' }
- user_params = { 'user_id': '3', 'platform_id': '2' }
- manifold_add_account(request,user_params)
-
- splitmail = username.split("@")[0]
- user_hrn = '{"user_hrn": "fibrebr.dummy."'+ splitmail + '"}'
- user_params = { 'config': user_hrn, 'auth_type':'managed'}
- manifold_update_account(request,user_params)
- html = "Now your CAFe user is associated with a MySlice account - Please login in CAFe again."
- return HttpResponse(html)
-
- else:
- #env['state'] = "Your affiliation (" + request.session["aff"] + ") at CAFe is not accepted."
- html = "Your CAFe affiliation (" + request.session["aff"] + ") is not accepted. <br> Only \"student\" affiliation."
- return HttpResponse(html)
- #return render_to_response('home-view.html',env, context_instance=RequestContext(request))
-
-
- # login-ok sets state="Welcome to MySlice" in urls.py
- def get (self, request, state=None):
- env = self.default_env()
- env['username']=the_user(request)
- env['topmenu_items'] = topmenu_items(None, request)
- if state: env['state'] = state
- elif not env['username']: env['state'] = "Please sign in"
- return HttpResponseRedirect ('/login-ok')
- #return render_to_response('home-view.html',env, context_instance=RequestContext(request))
+++ /dev/null
-#!/usr/bin/env python
-
-#Edelberto from manifoldauth
-import os,sys
-import subprocess
-import shlex
-import getpass
-from hashlib import md5
-import time
-from random import Random
-import crypt
-
-#from manifold.manifold.core.router import Router
-from manifold.core.query import Query
-# add user to manifold
-
-from django.views.generic import View
-from django.core.context_processors import csrf
-#from django.http import HttpResponseRedirect
-from django.contrib.auth import authenticate, login, logout
-from django.template import RequestContext
-from django.shortcuts import render_to_response
-
-from manifold.manifoldresult import ManifoldResult
-from ui.topmenu import topmenu_items, the_user
-from myslice.config import Config
-
-#from django.http import HttpResponse HttpResponseRedirect
-from django.http import HttpResponse
-#from django.http import HttpResponseRedirect
-#from django.template import RequestContext
-from django.contrib.sessions.backends.db import SessionStore
-
-def index(request):
-#class EdelbertoView (View):
-
-# =================== Old code - to validate =================
- '''
- ip = "<html><body>"
- ip += "cn: " + request.META['Shib-inetOrgPerson-cn'] + "</br>"
- ip += "sn: " + request.META['Shib-inetOrgPerson-sn'] + "</br>"
- ip += "eppn: " + request.META['Shib-eduPerson-eduPersonPrincipalName'] + "</br>"
- ip += "mail: " + request.META['Shib-inetOrgPerson-mail'] + "</br>"
- ip += "Affiliation br: " + request.META['Shib-brEduPerson-brEduAffiliationType'] + "</br>"
- ip += "Affiliation edu: " + request.META['Shib-eduPerson-eduPersonAffiliation'] + "</br>"
- ip += "Auth-Method: " + request.META['Shib-Authentication-Method'] + "</br>"
- ip += "Identity Provider: " + request.META['Shib-Identity-Provider'] + "</br>"
- ip += "Application ID: " + request.META['Shib-Application-ID'] + "</br>"
- ip += "Session ID: " + request.META['Shib-Session-ID'] + "</br>"
- '''
-# Test cookie support
- if request.session.test_cookie_worked():
- #if session.test_cookie_worked():
- return HttpResponse("Please enable cookies and try again.")
- #return
- print "Please enable cookies and try again."
- else:
- request.session['cn'] = request.META['Shib-inetOrgPerson-cn']
- request.session['mail'] = request.META['Shib-inetOrgPerson-mail']
- request.session['eppn'] = request.META['Shib-eduPerson-eduPersonPrincipalName']
- #request.session['aff'] = request.META['Shib-brEduPerson-brEduAffiliationType']
- request.session['aff'] = request.META['Shib-eduPerson-eduPersonAffiliation']
- request.session['shib'] = request.META['Shib-Session-ID']
-
- if 'mail' in request.session.keys():
- print "Cookie: OK -> Content: cn:" + request.session["cn"] + " mail: " + request.session["mail"] + " eppn: " + request.session["eppn"]
- #ip += "Cookie: OK -> Content: cn:" + request.session["cn"] + " mail: " + request.session["mail"] + " eppn: " + request.session["eppn"] + "</body></html>"
- else:
- print "Cookie: nothing/clear"
- #ip += "Cookie: nothing/clear </body></html>"
-
- # return HttpResponse(ip)
-
-
- # expose this so we can mention the backend URL on the welcome page
- def default_env (self):
- config=Config()
- return {
- 'MANIFOLD_URL':config.manifold_url(),
- }
-
- #def post (self,request):
- # env = self.default_env()
- #username = request.POST.get('username')
- #password = request.POST.get('password')
- if 'aff' in request.session.keys():
- aff = request.session["aff"]
- if aff == "student":
- if request.session["eppn"] == 'esilva@uff.br':
- username = 'admin'
- password = 'fibre2013'
- else:
- username = request.session["mail"]
- password = request.session["mail"] + "fibre2013"
-
- # pass request within the token, so manifold session key can be attached to the request session.
- token = {'username': username, 'password': password, 'request': request}
-
- # our authenticate function returns either
- # . a ManifoldResult - when something has gone wrong, like e.g. backend is unreachable
- # . a django User in case of success
- # . or None if the backend could be reached but the authentication failed
- auth_result = authenticate(token=token)
- # high-level errors, like connection refused or the like
- if isinstance (auth_result, ManifoldResult):
- manifoldresult = auth_result
- # let's use ManifoldResult.__repr__
- env['state']="%s"%manifoldresult
- return render_to_response('home-view.html',env, context_instance=RequestContext(request))
- # user was authenticated at the backend
- elif auth_result is not None:
- user=auth_result
- if user.is_active:
- print "LOGGING IN"
- login(request, user)
- htm = "<meta http-equiv=\"refresh\" content=\"0; url=https://sp-php.cafeexpresso.rnp.br/login-ok\" />"
- #return HttpResponseRedirect ('/login-ok')
- return HttpResponse (htm)
- else:
- env['state'] = "Your account is not active, please contact the site admin."
- return render_to_response('home-view.html',env, context_instance=RequestContext(request))
- # otherwise
- else:
- '''
- magic = "$1$"
- password = password
- # Generate a somewhat unique 8 character salt string
- salt = str(time.time()) + str(Random().random())
- salt = md5(salt).hexdigest()[:8]
-
- if len(password) <= len(magic) or password[0:len(magic)] != magic:
- password = crypt.crypt(password.encode('latin1'), magic + salt + "$")
-
- user_params = {
- 'email': username,
- 'password': password
- }
- query = Query(action='create', object='local:user', params=user_params)
-
-
- # Instantiate a TopHat router
- with Router() as router:
- router.forward(query)
- '''
- #myArgs=[username,password]
- #os.spawnlp(os.P_WAIT,'/tmp/adduser.py', username, password, '/bin/bash/')
- command = '/var/www/manifold/manifold/bin/adduser.py ' + username + ' ' + password
- #command = 'ls -la'
- args = shlex.split(command)
- p = subprocess.Popen(args, stdin=subprocess.PIPE).communicate()[0]
- print command
- print args
- print p
- #env['state'] = "Now your CAFe user is associated to your MySlice account - Please logging in CAFe again."
- #return render_to_response('home-view.html',env, context_instance=RequestContext(request))
- html = "Now its CAFe user is associated with a MySlice account - Please login in CAFe again."
- return HttpResponse(html)
-
- else:
- #env['state'] = "Your affiliation (" + request.session["aff"] + ") at CAFe is not accepted."
- html = "Your CAFe affiliation (" + request.session["aff"] + ") is not accepted. <br> Only \"student\" affiliation."
- return HttpResponse(html)
- #return render_to_response('home-view.html',env, context_instance=RequestContext(request))
-
-
- # login-ok sets state="Welcome to MySlice" in urls.py
- def get (self, request, state=None):
- env = self.default_env()
- env['username']=the_user(request)
- env['topmenu_items'] = topmenu_items(None, request)
- if state: env['state'] = state
- elif not env['username']: env['state'] = "Please sign in"
- return HttpResponseRedirect ('/login-ok')
- #return render_to_response('home-view.html',env, context_instance=RequestContext(request))
+++ /dev/null
-from django.core.urlresolvers import reverse\r
-from urllib import quote\r
-\r
-from django.conf import settings\r
-import myslice.settings\r
-\r
-def login_link(request):\r
- """\r
- This assumes your login link is the Shibboleth login page for your server \r
- and uses the 'target' url parameter.\r
- """\r
- full_path = quote(request.get_full_path())\r
- #login = reverse('shibboleth:login')\r
-\r
- LOGIN_URL = getattr(settings, 'LOGIN_URL', None)\r
-\r
- login = LOGIN_URL\r
- ll = "%s?target=%s" % (login, full_path)\r
- return { 'login_link': ll }\r
-\r
-def logout_link(request, *args):\r
- """\r
- This assumes your login link is the Shibboleth login page for your server \r
- and uses the 'target' url parameter.\r
- e.g: https://sp-php.cafeexpresso.rnp.br/Shibboleth.sso/Login\r
- """\r
- from app_settings import LOGOUT_URL, LOGOUT_REDIRECT_URL\r
- #LOGOUT_REDIRECT_URL specifies a default logout page that will always be used when\r
- #users logout from Shibboleth.\r
- target = LOGOUT_REDIRECT_URL or quote(request.build_absolute_uri())\r
- logout = reverse('shibboleth:logout')\r
- ll = "%s?target=%s" % (logout, target)\r
- return { 'logout_link': ll }\r
+++ /dev/null
-import time
-
-from django.contrib.auth.models import User
-
-from manifold.manifoldapi import ManifoldAPI, ManifoldException, ManifoldResult
-from manifold.core.query import Query
-
-# Name my backend 'ManifoldBackend'
-class ManifoldBackend:
-
- # Create an authentication method
- # This is called by the standard Django login procedure
- def authenticate(self, token=None):
- if not token:
- return None
-
- try:
- username = token['username']
- password = token['password']
- request = token['request']
-
- auth = {'AuthMethod': 'password', 'Username': username, 'AuthString': password}
- api = ManifoldAPI(auth)
- sessions_result = api.forward(Query.create('local:session').to_dict())
- print "result"
- sessions = sessions_result.ok_value()
- print "ok"
- if not sessions:
- print "GetSession failed", sessions_result.error()
- return
- print "first", sessions
- session = sessions[0]
-
- # Change to session authentication
- api.auth = {'AuthMethod': 'session', 'session': session['session']}
- self.api = api
-
- # Get account details
- # the new API would expect Get('local:user') instead
- persons_result = api.forward(Query.get('local:user').to_dict())
- persons = persons_result.ok_value()
- if not persons:
- print "GetPersons failed",persons_result.error()
- return
- person = persons[0]
- print "PERSON=", person
-
- request.session['manifold'] = {'auth': api.auth, 'person': person, 'expires': session['expires']}
- except ManifoldException, e:
- print "Caught ManifoldException, returning corresponding ManifoldResult"
- return e.manifold_result
- except Exception, e:
- print "E: manifoldbackend", e
- import traceback
- traceback.print_exc()
- return None
-
- try:
- # Check if the user exists in Django's local database
- user = User.objects.get(username=username)
- except User.DoesNotExist:
- # Create a user in Django's local database
- user = User.objects.create_user(username, username, 'passworddoesntmatter')
- user.first_name = "DUMMY_FIRST_NAME" #person['first_name']
- user.last_name = "DUMMY LAST NAME" # person['last_name']
- user.email = person['email']
- return user
-
- # Required for your backend to work properly - unchanged in most scenarios
- def get_user(self, user_id):
- try:
- return User.objects.get(pk=user_id)
- except User.DoesNotExist:
- return None
-
-
+++ /dev/null
-#!/usr/bin/env python
-
-#Edelberto from manifoldauth
-import os,sys
-import subprocess
-import shlex
-import getpass
-from hashlib import md5
-import time
-from random import Random
-import crypt
-
-username = 'teste'
-password = '123'
-
-command = '/var/www/manifold/manifold/bin/adduser.py ' + username + ' ' + password
- #command = 'ls -la'
-args = shlex.split(command)
-p = subprocess.Popen(args, stdin=subprocess.PIPE).communicate()[0]
-print command
-print args
-print p
# NOTE : if we were to create a user directly (just like we create slices,
# we would have to perform the steps in create_pending_user too
-
+ # Edelberto - I put this more below
# Add the user to the SFA registry
- sfa_create_user(wsgi_request, request)
+ #sfa_create_user(wsgi_request, request)
# Update Manifold user status
manifold_update_user(wsgi_request, request['email'], {'status': USER_STATUS_ENABLED})
# Add reference accounts for platforms
manifold_add_reference_user_accounts(wsgi_request, request)
+
+# Add the user to the SFA registry
+ sfa_create_user(wsgi_request, request)
# LDAP update user userEnabled = True
- mail = request['email']
- login = mail.split('@')[0]
- org = mail.split('@')[1]
- o = org.split('.')[-2]
- dc = org.split('.')[-1]
- # To know if user is a LDAP user - Need to has a 'dc' identifier
- if dc == 'br' or 'eu':
- ldap_modify_user(wsgi_request, request)
+ try:
+ mail = request['email']
+ login = mail.split('@')[0]
+ org = mail.split('@')[1]
+ o = org.split('.')[-2]
+ dc = org.split('.')[-1]
+ # To know if user is a LDAP user - Need to has a 'dc' identifier
+ if dc == 'br' or 'eu':
+ ldap_modify_user(wsgi_request, request)
+ except Exception, e:
+ "LDAP create user failed"
def create_pending_user(wsgi_request, request, user_detail):
"""
user_request['public_key'] = file_content
if not errors:
- # verify if is a LDAP
- mail = user_detail['email']
- login = mail.split('@')[0]
- org = mail.split('@')[1]
- o = org.split('.')[-2]
- dc = org.split('.')[-1]
- # To know if user is a LDAP user - Need to has a 'dc' identifier
- if dc == 'br' or 'eu':
- # LDAP insert directly - but with userEnable = FALSE
- ldap_create_user(wsgi_request, user_request, user_detail)
-
+ try:
+ # verify if is a LDAP
+ mail = user_detail['email']
+ login = mail.split('@')[0]
+ org = mail.split('@')[1]
+ o = org.split('.')[-2]
+ dc = org.split('.')[-1]
+ # To know if user is a LDAP user - Need to has a 'dc' identifier
+ if dc == 'br' or 'eu':
+ # LDAP insert directly - but with userEnable = FALSE
+ ldap_create_user(wsgi_request, user_request, user_detail)
+ except Exception, e:
+ print "LDAP: problem em access the LDAP with this credentail"
create_pending_user(wsgi_request, user_request, user_detail)
self.template_name = 'user_register_complete.html'
{% block content %}
<div class="row">
- <h1><img src="{{ STATIC_URL }}img/icon_support_small.png" alt="Open a Ticket" /> OneLab Support</h1>
+ <h1><img src="{{ STATIC_URL }}img/icon_support_small.png" alt="Open a Ticket" /> FIBRE Support</h1>
</div>
<div class="row">
<p>Please check our <a href="/portal/support/documentation">FAQ</a> section. Most of the basic problems are explained there.</p>
{% block content %}
<div class="row">
- <h1><img src="{{ STATIC_URL }}img/icon_support_small.png" alt="Open a Ticket" /> OneLab Portal Documentation</h1>
+ <h1><img src="{{ STATIC_URL }}img/icon_support_small.png" alt="Open a Ticket" /> FIBRE Portal Documentation</h1>
</div>
<div class="row">
<h2>Portal Components</h2>
</div>
{% else %}
<td>
- {% include 'fibre__widget-login-user.html' %}
- {% include 'fibre__widget-login-ldap-user.html' %}
+ {# include 'fibre__widget-login-user.html' #}
+ {# include 'fibre__widget-login-ldap-user.html' #}
+ {% include 'fibre__widget-login-fed-manager.html' %}
+ <a href="/cafe"><img src="{{ STATIC_URL }}img/fibre/cafe.jpg" alt="CAFe authentication" /></a>
{% endif %}
</td>
<td>
{% extends "layout_wide.html" %}
{% block head %}
+<!-- <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyC1RUj824JAiHRVqgc2CSIg4CpKHhh84Lw&sensor=false"></script> -->
<script src="{{ STATIC_URL }}js/onelab_slice-resource-view.js"></script>
+<script>
+ //myslice.slice = "{{ slice }}";
+</script>
{% endblock %}
{% block content %}
<div id="select-platform" class="list-group">
</div>
- <ul class="list-group">
+ <!-- <ul class="list-group">
<li class="list-group-item">Filter: CPU</li>
<li class="list-group-item">Filter: Interface</li>
<li class="list-group-item">...</li>
<li class="list-group-item">...</li>
<li class="list-group-item">...</li>
- </ul>
+ </ul> -->
</div>
- <div class="col-md-10">
+ <div class="col-md-10" style="height:100%;">
<div class="row">
{% include theme|add:"_widget-slice-sections.html" %}
</div>
- <div class="row slice-pending">
+ <!-- <div class="row slice-pending">
<ul class="nav nav-pills">
<li><a href="">Unreserved</a></li>
<li><a href="">Reserved</a></li>
- <li><a href="">Pending<span class="badge">42</span></a></li>
+ <li><a href="">Pending<span class="badge" id="badge-pending" style="display:none;"></span></a></li>
<li>
- <button type="button" class="btn btn-primary apply">Apply</button>
+ <button type="button" class="btn btn-primary apply" id="ApplyPendind">Apply</button>
<button type="button" class="btn btn-default clear">Clear</button>
</li>
+ <li>
+ <div id="loading" style="display:none;"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading" /></div>
+ </li>
</ul>
+ </div> -->
+ <div class="row">
+ {% if msg %}
+ <div class="col-md-12"><p class="alert-success">{{ msg }}</p></div>
+ {% endif %}
</div>
<div class="row">
- <ul class="nav nav-tabs">
- <li class="active"><a href="#">Resources</a></li>
- <li><a href="#"></a></li>
+ <ul class="nav nav-pills nav-resources">
+ <li class="active"><a data-panel="resources" href="#">Resources</a></li>
+ <li id="GoogleMap"><a data-panel="map" href="#">Map</a></li>
+ <li><a data-panel="pending" href="#">Pending</a></li>
<li><a href="#"></a></li>
</ul>
</div>
- <table cellpadding="0" cellspacing="0" border="0" class="table" id="objectList"></table>
+ <div class="row" style="height:100%;">
+ <div id="resources" class="panel">
+ {{list_resources}}
+ <!-- <table cellpadding="0" cellspacing="0" border="0" class="table" id="objectList"></table> -->
+ </div>
+ <div id="map" class="panel" style="height:370px;display:none;">
+ {{map_resources}}
+ </div>
+ <div id="pending" class="panel" style="height:370px;display:none;">
+ {{pending_resources}}
+ </div>
+ </div>
</div>
-{% endblock %}
\ No newline at end of file
+{% endblock %}
</div>
<ul class="list-group">
- <li class="list-group-item">Filter: authority</li>
+ <li class="list-group-item">Authority:<b> {{user_details.parent_authority}}</b>
+ <!--<select id="auth_list">
+ <option value="ple.upmc">UPMC</option>
+ <option value="ple.inria">INRIA</option>
+ <option value="ple.nitos">NITOS</option>
+ <option value="ple.iminds">iMinds</option>
+ </select> -->
+ </li>
<li class="list-group-item">Filter: slice</li>
<li class="list-group-item">...</li>
<li class="list-group-item">...</li>
</div>
<script>
$(document).ready(function() {
- $.post("/rest/user/",{'filters':{'parent_authority':'ple.upmc'}}, function( data ) {
- var list_users = [];
- var table_users = [];
- /*
- "enabled", "keys", "parent_authority", "user_first_name", "user_last_name", "user_phone", "user_hrn", "slice", "user_email"
- */
- $.each( data, function( key, val ) {
- list_users.push( "<li><a href=\"portal/user/"+val.user_email+"\">" + val.user_email + "</a></li>" );
- user_row = "<tr>";
- // checking the box for the users that belong to the selected slice
- var flag_checkbox = 0;
- for(var data in val.slice) {
- var element = val.slice[data];
- console.log("element");
- console.log(element);
- for(var key in element) {
- var value = element[key];
- if (value == 'ple.upmc.myslicedemo'){
- console.log("found!!");
+ //var selectedValue = $( "#auth_list option:selected" ).val();
+ //console.log(selectedValue);
+ //console.log("Name of the authority: " + "{{user_details.parent_authority}}");
+ //$("#auth_list").change(function(){
+ //selectedValue = $(this).find(":selected").val();
+ //console.log("the value you selected: " + selectedValue);
+ $.post("/rest/user/",{'filters':{'parent_authority': "{{user_details.parent_authority}}"}}, function( data ) {
+ var list_users = [];
+ var table_users = [];
+ /* Available fields
+ user_gid, user_enabled, slices, pi_authorities, keys, parent_authority, user_first_name,
+ user_urn, user_last_name, user_phone, user_hrn, user_email, user_type
+ */
+ $.each( data, function( key, val ) {
+ list_users.push( "<li><a href=\"portal/user/"+val.user_email+"\">" + val.user_email + "</a></li>" );
+ user_row = "<tr>";
+ // checking the box for the users that belong to the selected slice
+ var flag_checkbox = 0;
+ for(var data in val.slices) {
+ var element = val.slices[data];
+ if (element == "{{slice}}"){
+ //console.log("the slice is: "+ element);
flag_checkbox = 1;
user_row += "<td><input type='checkbox' checked='True'></td>";
}
-
}
- }
- if(flag_checkbox != 1){
- user_row += "<td><input type='checkbox'></td>";
- }
- user_row += "<td>"+val.user_email+"</td>";
- user_row += "<td>"+val.user_hrn+"</td>";
- user_row += "<td>"+val.enabled+"</td>";
- user_row += "</tr>";
- table_users.push(user_row);
+ if(flag_checkbox != 1){
+ user_row += "<td><input type='checkbox'></td>";
+ }
+ user_row += "<td>"+val.user_email+"</td>";
+ user_row += "<td>"+val.user_hrn+"</td>";
+ user_row += "<td>"+val.user_enabled+"</td>";
+ user_row += "</tr>";
+ table_users.push(user_row);
- });
- $("table#user-tab tr:last").after(table_users.join( "" ));
- $("div#user-tab-loaded").css("display","block");
- $("div#user-tab-loading").css("display","none");
- });
+ });
+ $("table#user-tab tr:last").after(table_users.join( "" ));
+ $("div#user-tab-loaded").css("display","block");
+ $("div#user-tab-loading").css("display","none");
+ });
+ // });
});
</script>
{% extends "layout_wide.html" %}
-{% block content %}
- <div class="col-md-2"></div>
- <div class="col-md-10">
- <div class="row">
- {% include theme|add:"_widget-slice-sections.html" %}
- </div>
- </div>
-
- <div class="col-md-2"></div>
- <div class="col-md-10">
- <br>
- <br>
- <div id="slice-tab-loading"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading Slices" /></div>
- <div id="slice-tab-loaded" style="display:none;">
- <table id="slice-tab">
- </table>
- </div>
- </div>
-
-<script>
- $(document).ready(function() {
- $.post("/rest/slice/",{'filters':{'slice_hrn':'{{slice}}'}}, function( data ) {
- var table_slices = [];
- /* "slice_hrn", "slice_description", "slice_type", "parent_authority", "created", "nodes", "slice_url", "slice_last_updated", "user", "slice_urn", "slice_expires" */
- $.each( data, function( key, val ) {
- if(val.nodes=="undefined" || val.nodes==null){
- nodes_length=0;
- }else{
- nodes_length=val.nodes.length;
- }
+{% block head %}
+
+{% endblock %}
- if(val.user=="undefined" || val.user==null){
- user_length=0;
- }else{
- user_length=val.user.length;
- }
+{% block content %}
- if(val.slice_url=="undefined" || val.slice_url==null){
- slice_url="";
- }else{
- slice_url="<a href='"+val.slice_url+"' target='_blank'>"+val.slice_url+"</a>";
- }
-
- slice_row = "<tr><td><b>Description:</b></td><td>"+val.slice_description+"</td></tr>";
- slice_row += "<tr><td><b>url:</b></td><td><a href='"+val.slice_url+" target='_blank'>"+val.slice_url+"</a></td></tr>";
- slice_row += "<tr><td><b>users:</b></td><td>"+user_length+"</td></tr>";
- slice_row += "<tr><td><b>resources:</b></td><td>"+nodes_length+"</td></tr>";
- slice_row += "<tr><td><b>created:</b></td><td>"+val.created+"</td></tr>";
- slice_row += "<tr><td><b>last update:</b></td><td>"+val.last_updated+"</td></tr>";
- slice_row += "<tr><td><b>expires:</b></td><td>"+val.slice_expires+"</td></tr>";
- table_slices.push(slice_row);
- });
- $("table#slice-tab").html(table_slices.join( "" ));
- $("div#slice-tab-loaded").css("display","block");
- $("div#slice-tab-loading").css("display","none");
- });
- });
-</script>
+<div class="wrapper">
+ <div class="row">
+ <div class="col-md-12">
+ {% include theme|add:"_widget-slice-sections.html" %}
+ </div>
+ </div>
+</div>
+<div class="container-fluid tab-content">
+ <div class="tab-pane active row" id="info">...</div>
+ <div class="tab-pane row" id="testbeds">...</div>
+ <div class="tab-pane row" id="resources">...</div>
+ <div class="tab-pane row" id="users">...</div>
+ <div class="tab-pane row" id="statistics">...</div>
+ <div class="tab-pane row" id="measurements">...</div>
+ <div class="tab-pane row" id="experiment">...</div>
+</div>
{% endblock %}
-<div class="col-md-8 slice-sections">
- <ul class="nav nav-pills nav-justified">
- <li {% if section == 'slice' %}class="active"{% endif %}><a href="/slice/{{ slice }}/">{{ slice }}</a></li>
- <li {% if section == 'testbeds' %}class="active"{% endif %}><a href="/testbeds/{{ slice }}/">Testbeds</a></li>
- <li {% if section == 'resources' %}class="active"{% endif %}><a href="/resources/{{ slice }}/">Resources</a></li>
- <li {% if section == 'users' %}class="active"{% endif %}><a href="/users/{{ slice }}/">Users</a></li>
- <li><a href="">Statistics</a></li>
- <li><a href="">Measurements</a></li>
- </ul>
-</div>
-<div class="col-md-4 slice-experiment">
- <a href="/portal/experiment"><button type="button" class="btn btn-default">Experiment</button></a>
-</div>
+<ul class="nav nav-tabs nav-sliceview">
+ <li {% if section != "resources" %}class="active"{% endif %}>
+ <a href="#info"><img src="{{ STATIC_URL }}icons/slices-xs.png" alt="About MySlice" /> {{ slice }}</a>
+ </li>
+ <li><a href="#testbeds">Testbeds</a></li>
+ <li {% if section == "resources" %}class="active"{% endif %}><a class="link" href="/resources/{{ slice }}">Resources</a></li>
+ <li><a href="#users">Users</a></li>
+ <li><a href="#experiment">Statistics</a></li>
+ <li><a href="#experiment">Measurements</a></li>
+ <li><a href="#experiment" data-toggle="tab">Experiment</a></li>
+</ul>
+<script>
+$(document).ready(function() {
+ $('.nav-sliceview a').click(function (e) {
+ if ($(this).hasClass('link')) return;
+ e.preventDefault();
+ $(this).tab('show');
+ var id = $(this).attr('href').substr(1);
+ $("#" + id).load('/' + id + '/{{ slice }}/');
+ });
+ $('div#info').load('/info/{{ slice }}/');
+});
+</script>
{% block content %}
<div class="row">
- <h1><img src="{{ STATIC_URL }}img/icon_user_small.png" alt="User Registration" /> OneLab Experimenter Registration</h1>
+ <h1><img src="{{ STATIC_URL }}img/icon_user_small.png" alt="User Registration" /> FIBRE Experimenter Registration</h1>
</div>
<div class="row">
{% block content %}
<div class="row">
- <h1><img src="{{ STATIC_URL }}img/icon_user_small.png" alt="User Registration" /> OneLab Experimenter Registration</h1>
+ <h1><img src="{{ STATIC_URL }}img/icon_user_small.png" alt="User Registration" /> FIBRE Experimenter Registration</h1>
</div>
<div class="row">