コード例 #1
0
ファイル: User.cs プロジェクト: nirgle/irception.org
        /// <summary>
        /// Create and save a new Token
        /// </summary>
        /// <param name="user"></param>
        /// <param name="entities"></param>
        /// <returns></returns>
        private static long CreateToken(User user, ircbotEntities entities)
        {
            var token = new Token
            {
                FKUserID = user.UserID,
                IP = "ip",
                Started = DateTime.UtcNow,
                Token1 = Utils.Get32ByteUID()
            };

            entities
                .Tokens
                .Add(token);

            entities
                .SaveChanges();

            return token.TokenID;
        }
コード例 #2
0
ファイル: User.cs プロジェクト: nirgle/irception.org
        /// <summary>
        /// Return any active token for this UserID.  If none, create a new one.
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public Token GetOrCreateToken(User user)
        {
            var token = _context
                .Tokens
                .Where(t => t.FKUserID == user.UserID
                            && t.Ended == null)
                .OrderBy(t => t.TokenID)
                .FirstOrDefault();

            if (token != null)
                return token;

            // Create a new one and get the ID
            long tokenID = Repository.CreateToken(user, new ircbotEntities());

            return _context
                .Tokens
                .Where(t => t.TokenID == tokenID)
                .FirstOrDefault();
        }
コード例 #3
0
ファイル: User.cs プロジェクト: nirgle/irception.org
        /// <summary>
        /// Update the signature for this user
        /// </summary>
        /// <param name="user"></param>
        /// <param name="signature"></param>
        public void UpdateSignature(User user, string signature)
        {
            var model = _context
                .Users
                .Where(u => u.UserID == user.UserID)
                .FirstOrDefault();

            if (model == null)
                return;

            model.Signature = signature;

            SaveChanges();
        }
コード例 #4
0
ファイル: User.cs プロジェクト: nirgle/irception.org
 /// <summary>
 /// Adds a ChannelVisit record for this user/channel. Does not call SaveChanges() on the context.
 /// </summary>
 /// <param name="user"></param>
 /// <param name="channel"></param>
 private void AddChannelVisit(User user, Channel channel)
 {
     _context
         .ChannelVisits
         .Add(new ChannelVisit
         {
             FKChannelID = channel.ChannelID,
             FKUserID = user.UserID,
             DateVisit = DateTime.UtcNow
         });
 }
コード例 #5
0
ファイル: User.cs プロジェクト: nirgle/irception.org
        /// <summary>
        /// Accept an invitation and set up a new user account
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <param name="suid">Invitation SUID</param>
        /// <returns></returns>
        public User Register(string username, string password, string suid)
        {
            Invite invite = GetInvite(suid);
            User invitedby = invite.UserInvitedBy;
            DateTime now = DateTime.UtcNow;

            User user = new User
            {
                DateAdded = now,
                FKUserIDInvitedBy = invite.FKUserIDInvitedBy,
                InviteLevel = invitedby.InviteLevel + 1,
                PasswordSHA256 = Utils.GetSHA256(password),
                Username = username
            };

            user
                .ChannelVisits
                .Add(new ChannelVisit
                {
                    FKChannelID = invite.FKChannelID,
                    DateVisit = DateTime.UtcNow
                });

            _context
                .Users
                .Add(user);

            invite.UserAcceptedBy = user;
            invite.DateAccepted = now;

            SaveChanges();

            return user;
        }
コード例 #6
0
ファイル: User.cs プロジェクト: nirgle/irception.org
        /// <summary>
        /// Create a new Invite object, save it to the table and return it.  If this nick!username@host already has an
        /// invite, return the existing object.
        /// </summary>
        /// <param name="inviter"></param>
        /// <param name="nick"></param>
        /// <param name="username"></param>
        /// <param name="host"></param>
        /// <param name="channelID"></param>
        /// <returns></returns>
        public Invite GetOrCreateInvite(User inviter, string nick, string username, string host, int channelID)
        {
            var existing = _context
                .Invites
                .Where(i => i.Nick == nick && i.User == username && i.Host == host)
                .FirstOrDefault();

            if (existing != null)
                return existing;

            var invite = new Invite
            {
                FKChannelID = channelID,
                DateInvited = DateTime.UtcNow,
                FKUserIDInvitedBy = inviter.UserID,
                Nick = nick,
                User = username,
                Host = host,
                SUID = Utils.Get32ByteUID()
            };

            _context
                .Invites
                .Add(invite);

            _context
                .SaveChanges();

            return invite;
        }
コード例 #7
0
ファイル: User.cs プロジェクト: nirgle/irception.org
        /// <summary>
        /// Update the Auth table with the UserID that authenticated the token. Does not call SaveChanges() on the context.
        /// </summary>
        /// <param name="user"></param>
        /// <param name="suid"></param>
        public void MatchUserToAuthToken(User user, string suid)
        {
            var auth = _context
                .Auths
                .Where(a => a.SUID == suid)
                .FirstOrDefault();

            if (auth == null)
                return;

            if (auth.FKUserID != null)
                return;

            auth.FKUserID = user.UserID;
            auth.DateAuthenticated = DateTime.UtcNow;
        }