def on_identity_loaded(sender, identity):
    if identity.name == 'guest':
        session.pop('user_id', None)
        identity.provides.clear()
    else:
        user = get_authenticated_user_by_riverid(identity.name)
        session['user_id'] = unicode(user._id)
        identity.provides.add(RoleNeed('user'))
Example #2
0
def run_register_new_device_adapter(request, api_method_wrapper):
    view = getattr(views, api_method_wrapper.view)
    
    device_guid = request.form.get('deviceguid')
    
    if not device_guid:
        return view('failure', {"errors":["You did not include a guid for this device"]})
    
    metalens_account = get_authenticated_user_by_riverid("metalens")
    
    candidate_apps = [app for app in metalens_account.apps if app.key == device_guid]
    
    if candidate_apps:
        user_app = candidate_apps[0]
    else:
        metalens_price_plans = get_all_price_plans_for_app_template('metalens/1', "admin")
        
        #TODO Here we need to add support for creating paid accounts too
        price_plan = [p for p in metalens_price_plans if p.name == "A metaLens Device"][0]
        
        subscription_id = create_new_subscription(int(time.time()), 0, price_plan)
        
        user_app_name = 'A metaLens Device %s' % device_guid
        user_app_key = device_guid
        user_app_secret_seed = "%s %s %s" % (unicode(metalens_account._id), user_app_name, time.time())
        user_app_secret = hashlib.sha224(user_app_secret_seed).hexdigest()
        user_app_template = unicode(con.AppTemplate.find_one({'name':'A metaLens Device'})._id)
        user_app = AuthenticatedUserApp({
            "name":user_app_name,
            "key":user_app_key,
            "secret":user_app_secret,
            "subscription_ids":[subscription_id],
            "template":user_app_template})
        metalens_account.apps.append(user_app)
        metalens_account.save()
        
    return view('success', {'key':user_app.key, 'secret':user_app.secret})