コード例 #1
0
ファイル: models.js プロジェクト: endtwist/inko
 db.addListener('result', function(result) {
     db.removeListener('result', arguments.callee);
     self.perms = [];
     if(result.ROWS.length) {
         var perms = result.ROWS;
         for(var i = 0, rl = perms.length; i < rl; i++) {
             self.perms.push(perms[i][0]);
         }
     }
     callback.call(self, self.user_id);
 });
コード例 #2
0
ファイル: models.js プロジェクト: endtwist/inko
            db.addListener('result', function(result) {
                if(result.ROWS.length) {
                    var user = result.ROWS[0];
                    self.username = user[0];
                    self.first_name = user[1];
                    self.last_name = user[2];
                    self.is_staff = parseInt(user[3]);
                    self.is_superuser = parseInt(user[4]);

                    db.removeListener('result', arguments.callee);
                    db.query(sprintf('SELECT ap.codename \
                                      FROM `auth_user_groups` AS aug, \
                                      `auth_group_permissions` AS agp, \
                                      `auth_user_user_permissions` AS auup, \
                                      `auth_permission` AS ap \
                                      WHERE \
                                      (aug.user_id = %d \
                                       AND aug.group_id = agp.group_id \
                                       AND agp.permission_id = ap.id) OR \
                                      (auup.user_id = %d \
                                       AND auup.permission_id = ap.id) \
                                      GROUP BY ap.id',
                                      parseInt(self.user_id),
                                      parseInt(self.user_id)));
                    db.addListener('result', function(result) {
                        db.removeListener('result', arguments.callee);
                        self.perms = [];
                        if(result.ROWS.length) {
                            var perms = result.ROWS;
                            for(var i = 0, rl = perms.length; i < rl; i++) {
                                self.perms.push(perms[i][0]);
                            }
                        }
                        callback.call(self, self.user_id);
                    });
                } else {
                    self.user_id = false;
                    callback.call(self, self.user_id);
                }
            });
コード例 #3
0
ファイル: models.js プロジェクト: endtwist/inko
    constructor: function(sid, callback) {
        var self = this;
        sid = sid.replace(/[^A-Za-z0-9]/g, '');
        db.query(sprintf('SELECT session_data FROM django_session \
                          WHERE session_key="%s" AND expire_date > NOW() \
                          LIMIT 1',
                          sid));
        db.addListener('result', function(result) {
            if(result.ROWS.length) {
                var pkl_session = result.ROWS[0][0]
                                        .replace(/[^A-Za-z0-9+=]/g, '')
                                        .base64Decoded;
                pkl_session = pkl_session.slice(0, pkl_session.length - 32);

                try {
                    self.user_id = (new PickleHack()).id(pkl_session);
                } catch(e) {
                    self.user_id = false;
                }
            }

            db.removeListener('result', arguments.callee);

            if(!pkl_session || !self.user_id)
                return callback.call(self, false);

            db.query(sprintf('SELECT username, first_name, last_name, \
                              is_staff, is_superuser FROM auth_user \
                              WHERE id="%d" LIMIT 1',
                              parseInt(self.user_id)));
            db.addListener('result', function(result) {
                if(result.ROWS.length) {
                    var user = result.ROWS[0];
                    self.username = user[0];
                    self.first_name = user[1];
                    self.last_name = user[2];
                    self.is_staff = parseInt(user[3]);
                    self.is_superuser = parseInt(user[4]);

                    db.removeListener('result', arguments.callee);
                    db.query(sprintf('SELECT ap.codename \
                                      FROM `auth_user_groups` AS aug, \
                                      `auth_group_permissions` AS agp, \
                                      `auth_user_user_permissions` AS auup, \
                                      `auth_permission` AS ap \
                                      WHERE \
                                      (aug.user_id = %d \
                                       AND aug.group_id = agp.group_id \
                                       AND agp.permission_id = ap.id) OR \
                                      (auup.user_id = %d \
                                       AND auup.permission_id = ap.id) \
                                      GROUP BY ap.id',
                                      parseInt(self.user_id),
                                      parseInt(self.user_id)));
                    db.addListener('result', function(result) {
                        db.removeListener('result', arguments.callee);
                        self.perms = [];
                        if(result.ROWS.length) {
                            var perms = result.ROWS;
                            for(var i = 0, rl = perms.length; i < rl; i++) {
                                self.perms.push(perms[i][0]);
                            }
                        }
                        callback.call(self, self.user_id);
                    });
                } else {
                    self.user_id = false;
                    callback.call(self, self.user_id);
                }
            });
        });
        db.addListener('error', function(error, errno) {
            self.user_id = false;
            callback.call(self, self.user_id);
        });
    }