Ejemplo n.º 1
0
Archivo: api.py Proyecto: jart/sparkles
def verify_email(email, **kwargs):
    ip = _try_to_get_ip(kwargs)
    yesterday = utils.now() - timedelta(days=1)
    five = utils.now() - timedelta(seconds=5)
    if db.EmailVerify.objects.filter(email=email, created__gt=five).count():
        return []
    invalid = False
    invalid |= not email_re.match(email)
    invalid |= db.User.objects.filter(email=email).count() > 0
    invalid |= db.EmailBlacklist.objects.filter(email=email).count() > 0
    invalid |= (
        db.EmailVerify.objects.filter(email=email, created__gt=yesterday).count() > settings.SPARK_AUTH_MAX_EMAIL_DAY
    )
    if ip:
        invalid |= (
            db.EmailVerify.objects.filter(ip=ip, created__gt=yesterday).count() > settings.SPARK_AUTH_MAX_EMAIL_DAY
        )
    if invalid:
        raise utils.APIException("invalid email address")
    code = db.base36(4)
    db.EmailVerify.objects.create(email=email, code=code, ip=ip)
    body = render_to_string("sparkles/email_verify.html", {"code": code})
    msg = mail.EmailMessage("Sparkles Email Verification Code", body, "*****@*****.**", [email])
    msg.content_subtype = "html"
    msg.send()
    return []
Ejemplo n.º 2
0
Archivo: api.py Proyecto: jart/sparkles
def verify_phone(phone, **kwargs):
    phone = phonenumbers.parse(phone, "US")
    if not phonenumbers.is_valid_number(phone):
        raise utils.APIException("Invalid phone number")
    if phone.country_code != 1:
        raise utils.APIException("We only support US/CA numbers now :(")
    phone = utils.e164(phone)
    ip = _try_to_get_ip(kwargs)
    yesterday = utils.now() - timedelta(days=1)
    five = utils.now() - timedelta(seconds=5)
    if db.PhoneVerify.objects.filter(phone=phone, created__gt=five).count():
        return []
    invalid = False
    invalid |= db.UserInfo.objects.filter(phone=phone).count() > 0
    invalid |= db.PhoneBlacklist.objects.filter(phone=phone).count() > 0
    invalid |= (
        db.PhoneVerify.objects.filter(phone=phone, created__gt=yesterday).count() > settings.SPARK_AUTH_MAX_PHONE_DAY
    )
    if ip:
        invalid |= (
            db.PhoneVerify.objects.filter(ip=ip, created__gt=yesterday).count() > settings.SPARK_AUTH_MAX_PHONE_DAY
        )
    if invalid:
        raise utils.APIException("invalid phone number")
    code = db.base36(4)
    db.PhoneVerify.objects.create(phone=phone, code=code, ip=ip)
    message.sms_send(phone, "sparkles phone auth code: " + code)
    return []
Ejemplo n.º 3
0
 def save(self, user, prop=None):
     data = self.cleaned_data
     prop = prop or db.Prop()
     prop.sid = prop.sid or db.base36()
     prop.user = prop.user or user
     prop.title = data['title']
     prop.save()
     prop.set_content(data['content'])
     prop.log(user, 'Edited')
     for name in data['invite'].replace(',', ' ').split():
         try:
             prop.invite(name)
         except KeyError:
             pass
     return prop
Ejemplo n.º 4
0
Archivo: api.py Proyecto: jart/sparkles
def verify_xmpp(xmpp, **kwargs):
    ip = _try_to_get_ip(kwargs)
    yesterday = utils.now() - timedelta(days=1)
    five = utils.now() - timedelta(seconds=5)
    if db.XmppVerify.objects.filter(xmpp=xmpp, created__gt=five).count():
        return []
    invalid = False
    invalid |= not email_re.match(xmpp)
    invalid |= db.UserInfo.objects.filter(xmpp=xmpp).count() > 0
    invalid |= db.XmppVerify.objects.filter(xmpp=xmpp, created__gt=yesterday).count() > settings.SPARK_AUTH_MAX_XMPP_DAY
    if ip:
        invalid |= db.XmppVerify.objects.filter(ip=ip, created__gt=yesterday).count() > settings.SPARK_AUTH_MAX_XMPP_DAY
    if invalid:
        raise utils.APIException("invalid xmpp address")
    code = db.base36(4)
    db.XmppVerify.objects.create(xmpp=xmpp, code=code, ip=ip)
    message.xmpp_send(xmpp, "sparkles xmpp auth code: " + code)
    return []