Example #1
0
def lambda_handler(event, context):
    try:
        usr = user.deserialize(event["user"])
        #usr = user.deserialize(event["user"])
        password = event["password"]
    except:
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())

    if not all(x is not None for x in [usr, password]):
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())

    try:
        if usr.role == "citizen":
            _usr = user.User.create_new_user(usr.name, usr.email, password,
                                             usr.role, usr.address, usr.city,
                                             usr.postnr)
            _usr.token = get_auth_token(_usr)
            return respond("200", _usr.serialize())
        else:
            _usr = user.User.create_new_user(usr.name, usr.email, password,
                                             usr.role)
            _usr.token = get_auth_token(_usr)
            return respond("200", _usr.serialize())

    except Exception as ex:
        raise ex
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())
Example #2
0
def lambda_handler(event, context):
    try:
        id = event["id"]
    except:
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())

    if not id:
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())

    usr = user.Contact.get(id)

    if not usr or usr.id == -1:
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())
    else:
        return respond("200", usr.serialize())
Example #3
0
 def createUser(self, username, serial, hash, nonce):
     results = yield self.userData.findByHash(hash)
     if nonce in [None, '']:
         if results:
             raise Exception('duplicate user hash!')
         usr = user.User(hash)
         usr.id = None
         usr.username = username
         usr.serial = serial
         usr.hash = hash
         usr.nonce = nonce
         usr.profiles = []
         yield self.userData.store(usr)
         for i in range(3):
             profile = user.Profile(i)
             profile.id = -1
             usr.profiles.append(profile)
         defer.returnValue(usr)
     else:
         # modification
         results = yield self.userData.findByNonce(nonce)
         if not results:
             raise Exception('User not found for nonce: %s' % nonce)
         usr = results[0]
         usr.hash = hash
         usr.serial = serial
         usr.username = username
         usr.nonce = None
         yield self.userData.store(usr)
         defer.returnValue(usr)
Example #4
0
def devtools_for_user(id):
    if not muser.User.exists(id):
        abort(404)
    cuser = muser.getCurrentUser()
    id = int(id)
    if not cuser.isDev():
        abort(403)

    user = muser.User(id)

    data = request.json

    if data["action"] == "update-role":
        user.setDetail("role", data["role"])
        return "ok"
    elif data["action"] == "override-delete":
        if user.isDeleted():
            user.setDetail("reputation", 0)
            return "ok"
        else:
            return "account not deleted", 400
    elif data["action"] == "reget-reputation":
        user.regetRep(data["global"])
        return "ok"

    return "no action found", 400
Example #5
0
def preferences_for_user(id):
    if not muser.User.exists(id):
        abort(404)
    cuser = muser.getCurrentUser()
    id = int(id)
    if id < 0 and not cuser.isMod():
        abort(403)
    if not (cuser.isMod() or id == cuser.id):
        abort(403)

    user = muser.User(id)

    data = request.json

    VALID_PREFERENCES = [
        "darkTheme", "autoSave", "mail:community", "mail:research",
        "pinnedNav", "betaTester", "gdpr:hideHomeCourseRecommendations"
    ]

    if data["key"] not in VALID_PREFERENCES:
        return jsonify({"result": "error", "error": "Ungültige Einstellung"})

    user.setPref(data["key"], data["value"])

    return jsonify({"result": "ok"})
Example #6
0
def order_test():
    conf = config.Config()
    conf.load('./unit/test.xml')
    print conf.to_string()
    print("%s,%d", conf.mongo_ip, conf.mongo_port)
    conn = pymongo.Connection(host=conf.mongo_ip,
                              port=conf.mongo_port,
                              network_timeout=10)
    print 'connection ok'
    try:
        db = mongodb.WxDatabase(conn)
        db_user = user.User(db.get_collection(conf.user))
    except IException as e:
        e.detail()
        return None
    print 'user coll ok'

    db_user.update('zhengyang', 0, '18757571517', 'xl area')
    db_user.update('zhengyang', 0, '18757571517', 'xf street')
    db_user.update('jianglili', 0, '15268526565', 'xl area')
    db_user.update('jianglili', 0, '15268526565', 'xf street')

    cursor = db_user.coll.find({})
    for ele in cursor:
        print ele

    wx_mongo.WxMongo().start()
    omgn = OrderMgn()
    omgn.init()
    access_text = {'openid': 'zhengyang'}
    access_input = json.dumps(access_text)
    print omgn.get_order_html(access_input)
Example #7
0
def add_user(email, password, name, role):
    conn = psycopg2.connect(connect_str)
    cursor = conn.cursor()

    salt = get_salt()
    hashed_password = hash_password(password, salt)

    try:
        cursor.execute("SELECT * FROM users WHERE email = %s", [email])
        exist = cursor.fetchone()

        # if exist:
            # return None

        cursor.execute("INSERT INTO users VALUES (DEFAULT, %s, %s, %s, %s, %s) RETURNING id, name, email, role;",
                       (hashed_password, salt, name, email, role))
        usr = cursor.fetchone()

    except Exception as ex:
        return ex

    conn.commit()
    cursor.close()
    conn.close()

    return user.User(usr[0], usr[1], usr[2], usr[3])
Example #8
0
def convert_dict_in_obj_list(list_obj, type_obj):

    new_list = []

    if type_obj == 'user':
        for obj in list_obj:
            new_list.append(
                user.User(obj['id'], obj['name'], obj['msg_cursor']))

    if type_obj == 'important_message':
        for obj in list_obj:
            new_list.append(
                important_message.ImportantMessage(obj['message'],
                                                   obj['channel'],
                                                   obj['user']))

    if type_obj == 'yt_vid':
        for obj in list_obj:
            new_list.append(yt_vid.Video(obj['link'], obj['name']))

    if type_obj == 'quote':
        for obj in list_obj:
            new_list.append(quote.Quote(obj['creator'], obj['quote']))

    return new_list
Example #9
0
def send_digest():
    digestables = Group.Group().get_digestables()
    for groupid in digestables:
        group = Group.Group(groupid)
        user = User.User(group.userID)
        digestable = group.get_digestable()
        if not digestable:
            continue
        feeds = {}
        for feedid, entryid in digestable:
            if not feeds.get('feed%s' % feedid, None):
                feeds['feed%s' % feedid] = Feed.Feed(feedid)
            feeds['feed%s' % feedid].entries.append(Entry.Entry(entryid))
        html = render_template("email.html", feeds=feeds.values(), group=group)
        # Create message container - the correct MIME type is multipart/alternative.
        msg = MIMEMultipart('alternative')
        msg['Subject'] = "Email digest: %s (issue: %s)" % (group.description,
                                                           group.issue)
        msg['From'] = '*****@*****.**'
        msg['To'] = user.email
        text = 'switch to html'
        msg.attach(MIMEText(text, 'plain'))
        msg.attach(MIMEText(html, 'html'))
        s = smtplib.SMTP('localhost')
        s.sendmail(msg['From'], msg['To'], msg.as_string())
        s.quit()
        group.update_sent()
        print('sent digest to: %s. %s' % (user.email, group.description))
    return ('', 204)
Example #10
0
def user_test():
    conf = config.Config()
    conf.load('./unit/test.xml')
    print("%s,%d", conf.mongo_ip, conf.mongo_port)
    conn = pymongo.Connection(host=conf.mongo_ip, port=conf.mongo_port, network_timeout=10)
    print 'connection ok'
    try:
        db = mongodb.WxDatabase(conn)
        user_coll = user.User(db.get_collection(conf.user))
    except IException as e:
        e.detail()
        return None

    print '*****subscribe test*****'
    user_coll.subscribe('105789992')
    user_coll.subscribe('105789993')
    for item in user_coll.coll.find():
        print item

    print '*****unsubscribe test*****'
    user_coll.unsubscribe('105789992')
    user_coll.unsubscribe('105789993')
    for uitem in user_coll.coll.find():
        print uitem

    print '*****update test*****'
    user_coll.update('105789994', 0, '18757571518', 'streat'
)
    user_coll.update('105789994', 1, '18757571518', 'city')
    for aitem in user_coll.coll.find():
        print aitem

    print 'user[%s] find in coll is %s' % ('105789994', user_coll.find('105789994'))
    user_coll.drop();
Example #11
0
    def insertUser(self):
        session = user.DBSession()
        try:
            #尝试先发送邮件
            EmailHandler.sendEmail(self, self.userid, self.email)

            new_user = user.User(userid=self.userid,
                                 username=self.username,
                                 password=self.password,
                                 email=self.email,
                                 auth=False)
            session.add(new_user)
            session.commit()
            self.set_status(201)
            result = {
                'success': True,
                'message': '成功创建账户,并已发送确认邮件',
                'status': 201,
                'token': pc.encrypt(self.userid)
            }
            self.write(json.dumps(result))
        except Exception:
            self.set_status(403)
            result = {
                'success': False,
                'message': '创建账户失败,用户名与邮箱不能重复',
                'status': 403
            }
            self.write(json.dumps(result))
        finally:
            session.close()
Example #12
0
def lambda_handler(event, context):
    try:
        id = event["id"]
    except Exception as ex:
        raise ex
        return respond("400", user.User(-1, "", "", "").serialize())

    if not id:
        return respond("401", user.User(-1, "", "", "").serialize())

    ctz = user.Citizen.get(id)

    if not ctz or ctz.id == -1:
        return respond("402", user.User(-1, "", "", "").serialize())
    else:
        return respond("200", ctz.serialize())
Example #13
0
def userbookmarks(username):
    if not username:
        return redirect('/recent', 302)
    user = User.User(username=username)
    if user.ID:
        amount, start = amountstart()

        b = Bookmark.Bookmark()
        bookmarks = b.get_bookmarks(userID=user.ID, amount=amount, start=start)
        f = Feed.Feed()
        feedentries = f.get_by_bookmarks(bookmarks) if f.get_by_bookmarks(
            bookmarks) else []
        feeds = {}
        for feedid, entryid, d in feedentries:
            if not feeds.get('feed%s' % feedid, None):
                feeds['feed%s' % feedid] = Feed.Feed(feedid)
            feeds['feed%s' % feedid].entries.append(Entry.Entry(entryid))
        return render_template("recent.html",
                               feeds=feeds.values(),
                               amount=amount,
                               menu=usermenu(),
                               title='Bookmarks by: %s' % username,
                               path="/%s/bookmarks" % username,
                               nextstart=int(start) + int(amount),
                               prevstart=max(int(start) - int(amount),
                                             -1)), 200, {
                                                 'Cache-Control': 's-maxage=1'
                                             }
Example #14
0
 def test_userpage(self):
     u = user.User(1)
     with self.app as c:
         with c.session_transaction() as sess:
             sess['das_hash'] = u.das_hash
         response = c.get('/user')
         assert '<div class="grid_container">'.encode(
             'utf-8') in response.data
Example #15
0
def lambda_handler(event, context):
    try:
        email = event['email']
        password = event['password']
    except:
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())

    if not all(x is not None for x in [email, password]):
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())

    usr = user.User.attempt_login(email, password)

    if not usr or usr.id == -1:
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())
    else:
        usr.token = get_auth_token(usr)
        return respond("200", usr.serialize())
Example #16
0
def lambda_handler(event, context):
    try:
        dvc: device.AlexaDevice = deserialize(event["device"])

        if dvc.devicetype == "alexadevice":
            dvc: device.Device = device.Device.get_from_object(dvc.user_id)
            usr = dvc.get_owner()

            return respond("200", usr.serialize())

        # TODO: Add more devices

        else:
            return respond("400",
                           user.User(-1, "", "", "userAdmin").serialize())
    except:
        return respond("401", user.User(-1, "", "", "userAdmin").serialize())
Example #17
0
def create_group():
    user = User.User()
    if user.verify(session.get('das_hash', None)):
        aggregation = 'email' if request.form.get(
            'aggregation') == 'true' else ''
        group = Group.Group(description=request.form.get('description'),
                            aggregation=aggregation,
                            frequency=request.form.get('frequency'),
                            userID=user.ID)
Example #18
0
def login():
    if request.method == "POST":
        user = User.User()
        if user.do_login():
            session['das_hash'] = user.das_hash
            return redirect('https://rss.xiffy.nl/recent', 302)
        else:
            print('boe')
    return render_template("login.html")
Example #19
0
def userpage():
    user = User.User()
    if not user.verify(session.get('das_hash', None)):
        return render_template("login.html")
    group = Group.Group()
    groups = group.get_groups(userID=user.ID)
    return render_template("userpage.html",
                           user=user,
                           groups=groups,
                           menu=usermenu())
Example #20
0
def userGenerator():
    for i in range(0, 200):
        u = user.User('user' + str(i))
        u.setName('user' + str(i))
        u.setGender(randomGender())
        u.setAge(randint(18, 90))
        u.setVehicle(randomVeichle())
        u.setFavouriteCategories(randomCategories())
        u.setJob(randomJob())
        print(u)
Example #21
0
def usermenu():
    user = User.User()
    payload = ''
    if user.verify(session.get('das_hash', None)):
        groups = Group.Group().get_groups(userID=user.ID)
        if not groups:
            groups = []
        payload = render_template('menu/usermenu.html',
                                  user=user,
                                  groups=groups)
    return "%s %s" % (payload, all_feeds())
Example #22
0
def register():
    username = request.form['username']
    password = request.form['password']
    customer = user.User()
    result = customer.sign_up(username, password)
    token = result[0]
    msg = result[1]
    if token:
        print(msg)
        return render_template('login.html')
    else:
        print(msg)
        return render_template('register.html')
Example #23
0
def lambda_handler(event, context):

    contacts = user.Contact.get_all()
    return_string = "["

    if not contacts:
        return respond("400", user.User(-1, "", "", "userAdmin").serialize())
    else:
        for ctc in contacts:
            return_string += ctc.serialize() + ","

        return_string = return_string[:-1] + "]"

        return respond("200", return_string)
Example #24
0
 def findByHash(self, hash):
     sql = ('SELECT id,username,serial,hash,reset_nonce,updated_on '
            'FROM users WHERE deleted = 0 AND hash = %s')
     rows = yield self.dbController.dbRead(0, sql, hash)
     results = []
     for row in rows:
         usr = user.User(row[3])
         usr.id = row[0]
         usr.username = row[1]
         usr.serial = row[2]
         usr.hash = row[3]
         usr.nonce = row[4]
         usr.updatedOn = row[5]
         results.append(usr)
     defer.returnValue(results)
Example #25
0
 def findByUsername(self, username):
     sql = ('SELECT player_id,name,serial5,hash5 '
            'FROM weblm_players WHERE approved="yes" AND name = %s')
     rows = yield self.dbController.dbRead(0, sql, username)
     results = []
     for row in rows:
         usr = user.User(row[3])
         usr.id = row[0]
         usr.username = row[1]
         usr.serial = row[2]
         usr.hash = row[3]
         usr.nonce = None
         #usr.updatedOn = row[5]
         results.append(usr)
     defer.returnValue(results)
Example #26
0
def lambda_handler(event, context):
    try:
        usr = usr = user.deserialize(str(event["user"]))
    except:
        return respond("400", event["user"])

    if not user:
        return respond("400", event["user"])

    try:
        usr.delete()
        return respond("200",
                       user.User(-1, "", "", "citizenAdmin").serialize())
    except:
        return respond("400", event["user"])
Example #27
0
 def findByHash(self, hash):
     #log.debug('EVO: UserData.findByHash: %s' % hash)
     sql = ('SELECT player_id,name,serial6,hash6 '
            'FROM weblm_players WHERE approved="yes" AND hash6 = %s')
     rows = yield self.dbController.dbRead(0, sql, hash)
     results = []
     for row in rows:
         usr = user.User(row[3])
         usr.id = row[0]
         usr.username = row[1]
         usr.serial = row[2]
         usr.hash = row[3]
         usr.nonce = None
         #usr.updatedOn = row[5]
         results.append(usr)
     defer.returnValue(results)
Example #28
0
    def start(self):
        conf = config.Config()
        self.conn = pymongo.Connection(host=conf.mongo_ip,
                                       port=conf.mongo_port,
                                       network_timeout=10)
        self.db = mongodb.WxDatabase(self.conn)

        self.user = user.User(self.db.get_collection(conf.user))
        self.stat = stat.Stat(self.db.get_collection(conf.stat))
        self.menu = menu.Menu(self.db.get_collection(conf.menu))
        self.week_now = menu.WeekNow(self.db.get_collection(conf.week_now))
        self.week_time = menu.WeekTime(self.db.get_collection(conf.week_time))
        self.admin = admin.Admin(self.db.get_collection(conf.admin))
        self.cache = cache.Cache(self.db.get_collection(conf.cache))
        self.order = order.Order(self.db.get_collection(conf.order))
        self.shopping = order.Shopping(self.db.get_collection(conf.shopping))
Example #29
0
 def get(self, id):
     #sql = ('SELECT id,username,serial,hash,reset_nonce,updated_on '
     #       'FROM users WHERE deleted = 0 AND id = %s')
     sql = ('SELECT player_id,name,serial5,hash5 '
            'FROM weblm_players WHERE approved ="yes" AND id = %s')
     rows = yield self.dbController.dbRead(0, sql, id)
     results = []
     for row in rows:
         usr = user.User(row[3])
         usr.id = row[0]
         usr.username = row[1]
         usr.serial = row[2]
         usr.hash = row[3]
         usr.nonce = None
         #usr.updatedOn = row[5]
         results.append(usr)
     defer.returnValue(results)
Example #30
0
def login(email, password):
    conn = psycopg2.connect(connect_str)
    cursor = conn.cursor()

    cursor.execute("SELECT id, password, salt FROM users WHERE email = %s", [email])
    usr = cursor.fetchone()
    conn.commit()
    cursor.close()
    conn.close()

    if not usr:
        return None

    if check_password(password, usr[1], usr[2]):
        return get_user(usr[0])
    else:
        return user.User(-1, "", "", "")