コード例 #1
0
        public MainViewModel(KCUser user)
        {
            _mainModel      = new MainModel();
            _mainModel.User = user;

            RefreshRecentSessions();
        }
コード例 #2
0
        public KCUser CreateUser(string username, string password)
        {
            KCUser user = new KCUser();

            user.UserId    = Guid.NewGuid();
            user.Name      = username;
            user.LoginName = username;
            user.Created   = DateTime.Now;

            if (string.IsNullOrEmpty(password))
            {
                user.PasswordHash = null;
                user.PasswordSalt = null;
            }
            else
            {
                var digest = new Users.UserAuthenticationSecurity().Hash(password);
                user.PasswordHash = digest.HashBase64;
                user.PasswordSalt = digest.SaltBase64;
            }

            _db.KCUser.Add(user);
            _db.SaveChanges();

            return(user);
        }
コード例 #3
0
        public KCUser GetByLoginName(string loginName)
        {
            KCUser user = _db.KCUser
                          .Where(u => u.LoginName.Equals(loginName))
                          .FirstOrDefault();

            return(user);
        }
コード例 #4
0
 public void ProcessLogin(KCUser user)
 {
     this.User            = user;
     this.LoginSuccessful = (user != null);
     OnCloseEventHandler(new LoginViewClosedEventArgs()
     {
         User = user
     });
 }
コード例 #5
0
        public void DoLogin()
        {
            KCUser user = _userMgr.GetByLoginName(_loginModel.LoginName);

            if (user == null)
            {
                _loginModel.ErrorMsg = "invalid login name";
            }
            else
            {
                ProcessLogin(user);
            }
        }
コード例 #6
0
        public TextSequenceInputViewModel(KCUser user, ITextSampleGenerator gen)
        {
            _seqInputModel = new TextSequenceInputModel();
            _seqActive     = false;

            _generator  = gen;
            _sessionMgr = new UserSession(user, gen);

            _updateTimer          = new DispatcherTimer(DispatcherPriority.Normal, App.Current.Dispatcher);
            _updateTimer.Interval = new TimeSpan(0, 0, 0, 0, UPDATE_INTERVAL_IN_MS);
            _updateTimer.Tick    += (_, a) => {
                DoInterval();
            };
        }
コード例 #7
0
        public IList <Data.Session> GetHistoryDetailsAllTime(KCUser currentUser, int lastXNumberRecords)
        {
            var results = _db.Session
                          .Where(sess => sess.UserId.Equals(currentUser.UserId))
                          .Include(sess => sess.KeySequence)
                          .Include(sess => sess.KeySequence.Select(b => b.SourceType))
                          .Include(sess => sess.KeySequence.Select(b => b.KeySequenceAnalysis))
                          .Include(sess => sess.KeySequence.Select(b => b.KeySequenceAnalysis.Select(c => c.AnalysisSpeed)))
                          .Include(sess => sess.KeySequence.Select(b => b.KeySequenceAnalysis.Select(c => c.AnalysisAccuracy)))
                          .OrderByDescending(s => s.Created)
                          .Take(lastXNumberRecords);

            return(results.ToList());
        }
コード例 #8
0
        public KCUserLogin RecordLogin(KCUser user, HttpContext context)
        {
            KCUserLogin newLogin = new KCUserLogin();

            newLogin.KCUserLoginId = Guid.NewGuid();
            newLogin.UserId        = user.UserId;
            newLogin.Created       = DateTime.Now;
            newLogin.IpAddress     = GetIpAddress(context);
            newLogin.UserAgent     = GetUserAgent(context);

            _db.KCUserLogin.Add(newLogin);
            _db.SaveChanges();

            return(newLogin);
        }
コード例 #9
0
        public HttpResponseMessage GetNewSession(JWTToken token)
        {
            var user = new KCUser()
            {
                UserId = Guid.Parse(token.UserId)
            };
            var session    = new KeyCdr.UserSession(user).StartNewSession();
            var newSession = new SessionModel()
            {
                SessionId = session.SessionId,
                UserId    = session.UserId,
            };

            return(Request.CreateResponse(HttpStatusCode.OK, newSession));
        }
コード例 #10
0
        public HttpResponseMessage GetNewSequence(SessionModel session)
        {
            WikipediaTextGenerator gen = new WikipediaTextGenerator();
            var sample = gen.GetParagraph();

            KCUser user = new KCUser()
            {
                UserId = session.UserId
            };
            UserSession sessionMgr = new UserSession(user);
            KeySequence seq        = sessionMgr.StartNewSequence(sample);

            var result = new SequenceModel()
            {
                SessionId  = seq.SessionId,
                SequenceId = seq.KeySequenceId,

                Text       = sample.GetText(),
                SourceKey  = sample.GetSourceKey(),
                SourceType = sample.GetSourceType().ToString()
            };

            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }
コード例 #11
0
        public bool IsValidLogin(KCUser user, string password)
        {
            if (user == null)
            {
                return(false);
            }

            //if the password salt or hash is null then let the user login
            //regardless of password
            //this is probably a huge security hole...
            if (user.PasswordSalt == null || user.PasswordHash == null)
            {
                return(true);
            }

            UserAuthenticationSecurity sec = new UserAuthenticationSecurity();
            bool isValidLogin = sec.IsValid(new UserAuthenticationDigest()
            {
                Hash = Convert.FromBase64String(user.PasswordHash),
                Salt = Convert.FromBase64String(user.PasswordSalt)
            }, password);

            return(isValidLogin);
        }
コード例 #12
0
 public UserSession(KCUser user, ITextSampleGenerator generator)
 {
     _user      = user;
     _generator = generator;
 }
コード例 #13
0
 public IList <Data.Session> GetHistoryDetailsAllTime(KCUser currentUser)
 {
     return(GetHistoryDetailsAllTime(currentUser, DEFAULT_ALL_HISTORY_NUM_RECORDS));
 }
コード例 #14
0
        public void TestSetup()
        {
            UserManager mgr = new UserManager();

            _user = mgr.CreateGuest();
        }
コード例 #15
0
 public UserSessionStateless(KCUser user)
     : base(user, new WikipediaTextGenerator())
 {
 }
コード例 #16
0
 public UserSessionStateless(KCUser user, ITextSampleGenerator generator)
     : base(user, generator)
 {
 }
コード例 #17
0
        public void LoginAsGuest()
        {
            KCUser user = _userMgr.CreateGuest();

            ProcessLogin(user);
        }
コード例 #18
0
 public UserSession(KCUser user)
     : this(user, new WikipediaTextGenerator())
 {
 }