Exemple #1
0
    def linkUser(self, user):
        """
        collega l'utente assopy passato con il backend; crea l'utente remoto se
        necessario.
        """
        if not settings.GENRO_BACKEND:
            return user
        if user.assopy_id:
            return user
        name = unicode(user.user).encode("utf-8")
        if not user.user.is_active:
            log.info('cannot link a remote user to "%s": it\'s not active', name)
            return

        log.info('a remote user is needed for "%s"', name)
        # il lookup con l'email può ritornare più di un id; non è un
        # problema dato che associo lo user con il backend solo quando ho
        # verificato l'email (e la verifica non è necessaria se si loggano
        # con janrain), quindi posso usare una qualsiasi delle identità
        # remote. Poi un giorno implementeremo il merge delle identità.
        rid = genro.users(email=user.user.email)["r0"]
        if rid is not None:
            log.info('an existing match with the email "%s" is found: %s', user.user.email, rid)
            user.assopy_id = rid
            user.save()
            genro.user_remote2local(user)
        else:
            rid = genro.create_user(user.user.first_name, user.user.last_name, user.user.email)
            log.info("new remote user id: %s", rid)
            user.assopy_id = rid
            user.save()
        return user
Exemple #2
0
 def create_user(self, email, first_name='', last_name='', password=None, token=False, active=False, assopy_id=None, send_mail=True):
     uname = janrain.suggest_username_from_email(email)
     duser = auth.models.User.objects.create_user(uname, email, password=password)
     duser.first_name = first_name
     duser.last_name = last_name
     duser.is_active = active
     duser.save()
     user = User(user=duser)
     if token:
         user.token = str(uuid4())
     if assopy_id is not None:
         user.assopy_id = assopy_id
     user.save()
     user_created.send(sender=user, profile_complete=(password is not None) or (token is not None))
     log.info(
         'new local user "%s" created; for "%s %s" (%s)',
         duser.username, first_name, last_name, email,
     )
     if assopy_id is not None and settings.GENRO_BACKEND:
         genro.user_remote2local(user)
     if send_mail:
         utils.email(
             'verify-account',
             ctx={
                 'user': duser,
                 'token': Token.objects.create(ctype='v', user=duser),
             },
             to=[email]
         ).send()
     return user
Exemple #3
0
    def linkUser(self, user):
        """
        collega l'utente assopy passato con il backend; crea l'utente remoto se
        necessario.
        """
        if not settings.GENRO_BACKEND:
            return user
        if user.assopy_id:
            return user
        name = unicode(user.user).encode('utf-8')
        if not user.user.is_active:
            log.info('cannot link a remote user to "%s": it\'s not active', name) 
            return

        log.info('a remote user is needed for "%s"', name)
        # il lookup con l'email può ritornare più di un id; non è un
        # problema dato che associo lo user con il backend solo quando ho
        # verificato l'email (e la verifica non è necessaria se si loggano
        # con janrain), quindi posso usare una qualsiasi delle identità
        # remote. Poi un giorno implementeremo il merge delle identità.
        rid = genro.users(email=user.user.email)['r0']
        if rid is not None:
            log.info('an existing match with the email "%s" is found: %s', user.user.email, rid)
            user.assopy_id = rid
            user.save()
            genro.user_remote2local(user)
        else:
            rid = genro.create_user(user.user.first_name, user.user.last_name, user.user.email)
            log.info('new remote user id: %s', rid)
            user.assopy_id = rid
            user.save()
        return user