Пример #1
0
 /// <summary>
 /// Validates the the session is valid and bumps its Timeout. Throws InvalidSession exception if not valid. Sets Session property if session is valid.
 /// </summary>
 /// <param name="session"></param>
 private void ValidateSession(Guid session)
 {
     ClearOldSessions();
     User = (from s in _context.DB_LoginSessions where s.Id == session select s.DB_User).FirstOrDefault();
     if (User == null)
     {
         throw new FOEServiceException(FOEStatusCodes.InvalidSession);
     }
     try
     {
         lock (validateLock)
         {
             DataAccess.Database.DB_LoginSession da_session = User.DB_LoginSessions.FirstOrDefault(s => s.Id == session);
             if (da_session == null)
             {
                 throw new FOEServiceException(FOEStatusCodes.InvalidSession);
             }
             da_session.Timeout = DateTime.UtcNow + TimeSpan.FromHours(1);
             _context.SubmitChanges();
             Session = session;
         }
     }
     catch (ChangeConflictException)
     {
         // This can happen if multiple request is performed
         // simultaneously on the same session.
         // Verify that the session is still valid
         // and accept the missing update.
         _context.Refresh(RefreshMode.OverwriteCurrentValues, User.DB_LoginSessions);
         if (User.DB_LoginSessions.FirstOrDefault(s => s.Id == session) == null)
         {
             throw new FOEServiceException(FOEStatusCodes.InvalidSession);
         }
     }
 }
Пример #2
0
        /// <summary>
        /// 从Token获取用户信息
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static async Task <Userinfo> GetUserAsync(this HttpContext context)
        {
            AuthenticateResult result = await context.AuthenticateAsync(JwtBearerDefaults.AuthenticationScheme);

            if (result.Principal == null)
            {
                context.Response.ContentType = "application/json";
                await context.Response.WriteAsync(new Basemessage()
                {
                    state = 500, message = "Token签名错误,请检查是否授权"
                }.ToJson());

                return(new Userinfo());
            }
            var ClaimResult = result.Principal.Claims.ToList().FirstOrDefault(x => x.Type == JwtClaimTypes.Id);
            var userId      = ClaimResult != null?ClaimResult.Value.ToInt() : 0;

            var userInfo = new DB_User().GetUser(userId);

            if (userId == 0 || userInfo == null)
            {
                context.RemoveCookie(CoreConfiguration.JwtCookiesTokenKey);
                context.Response.ContentType = "application/json";
                await context.Response.WriteAsync(new Basemessage()
                {
                    state = 500, message = "Token签名错误,未找到该用户信息"
                }.ToJson());

                return(new Userinfo());
            }
            userInfo.group = new DB_Group().Get(userInfo.Power_ID);
            return(userInfo);
        }
Пример #3
0
        public HttpResponseMessage deleteUser([FromBody] USER u)
        {
            Result <USER> ru     = new Result <USER>();
            int           result = 0;

            try
            {
                result = DB_User.deleteUser(u);
                if (result == 1)
                {
                    ru.code    = "2040";
                    ru.success = "true";
                    ru.message = "删除成功!";
                }
                else
                {
                    ru.code    = "2041";
                    ru.success = "false";
                    ru.message = "删除失败";
                }
            }
            catch (Exception e) {
                ru.code    = "2042";
                ru.success = "false";
                ru.message = e.Message;
            }

            ru.systemTime = Conn.GetTimeStamp();
            ru.data       = null;

            return(Conn.toJson(ru));
        }
Пример #4
0
        public bool Buy(int id, int userid)
        {
            DB_Product product = db.Products.GetItem(id);
            DB_User    user    = db.Users.GetItem(userid);

            if (product == null || user == null)
            {
                throw new ArgumentNullException();
            }
            foreach (DB_Product p in user.Products)
            {
                if (p == product)
                {
                    return(false);
                }
                else
                {
                    user.Products.Add(product);
                    db.Users.Update(user);
                    db.Save();
                    return(true);
                }
            }
            return(false);
        }
Пример #5
0
        public HttpResponseMessage queryUser()
        {
            Result <USER> ru    = new Result <USER>();
            List <USER>   luser = new List <USER>();

            try
            {
                luser = DB_User.getUser();

                if (luser.Count > 0)
                {
                    ru.code    = "2020";
                    ru.success = "true";
                    ru.message = "获取成功!";
                }
                else
                {
                    ru.code    = "2021";
                    ru.success = "false";
                    ru.message = "无数据";
                }
            }
            catch (Exception e) {
                ru.code    = "2022";
                ru.success = "false";
                ru.message = e.Message;
            }

            ru.systemTime = Conn.GetTimeStamp();
            ru.data       = luser;

            return(Conn.toJson(ru));
        }
 public UserBLL(WindownApplication _app)
 {
     app                    = _app;
     OperateDBUser          = new DB_User(app.UserDao, app.UserFuncDao);
     OperateDBUserGroup     = new DB_UserGroup(app.UserGroupDao);
     OperateDBUserGroupFunc = new DB_UserGroupFunc(app.UserFuncDao);
     OperateDBFunctionCode  = new DB_FunctionCode(app.FunctionCodeDao);
 }
Пример #7
0
        /// <summary>
        /// Looks for all invites to the provided game session. If all are accepted, start the game.
        /// </summary>
        /// <param name="guid"></param>
        public void AttemptGameStart(DB_Game da_game)
        {
            var gameInvites = from i in _context.DB_Invites where i.GameId == da_game.Id select i;

            if (gameInvites.Count <DB_Invite>() < 5)
            {
                throw new FOEServiceException(FOEStatusCodes.InternalError, "Game start attempted with fewer than 5 players");
            }

            //Check if all invites are accepted. else we just wont start the game.
            bool           allInvitesAccepted = true;
            List <DB_User> invitedUsers       = new List <DB_User>();

            foreach (DB_Invite invite in gameInvites)
            {
                if (invite.Status != (int)DB_Invite.InviteStatus.Accepted)
                {
                    allInvitesAccepted = false;
                    break;
                }
                invitedUsers.Add((from u in _context.DB_Users where u.Id == invite.InvitedUser.Value select u).FirstOrDefault());
            }

            if (allInvitesAccepted == true)
            {
                //Randomize which user that plays which nation.
                //TODO: Add ability to pick nations?
                Random  rnd     = new Random();
                DB_User da_user = invitedUsers.OrderBy(x => rnd.Next()).FirstOrDefault();
                da_game.GermanPlayer = da_user.Id;
                SendEventToUser(da_user.ToUser(FOEDataInclusion.Everything), GameEvents.GameStarted);
                invitedUsers.Remove(da_user);

                da_user = invitedUsers.OrderBy(x => rnd.Next()).FirstOrDefault();
                da_game.JapanesePlayer = da_user.Id;
                SendEventToUser(da_user.ToUser(FOEDataInclusion.Everything), GameEvents.GameStarted);
                invitedUsers.Remove(da_user);

                da_user = invitedUsers.OrderBy(x => rnd.Next()).FirstOrDefault();
                da_game.AmericanPlayer = da_user.Id;
                SendEventToUser(da_user.ToUser(FOEDataInclusion.Everything), GameEvents.GameStarted);
                invitedUsers.Remove(da_user);

                da_user = invitedUsers.OrderBy(x => rnd.Next()).FirstOrDefault();
                da_game.EnglishPlayer = da_user.Id;
                SendEventToUser(da_user.ToUser(FOEDataInclusion.Everything), GameEvents.GameStarted);
                invitedUsers.Remove(da_user);

                da_game.RussianPlayer = invitedUsers.FirstOrDefault().Id;
                SendEventToUser(invitedUsers.FirstOrDefault().ToUser(FOEDataInclusion.Everything), GameEvents.GameStarted);
                da_game.IsActive = true;
                da_game.Phase    = (int)DB_Game.GamePhases.Buy;
                da_game.Turn     = 0;

                _context.DB_Invites.DeleteAllOnSubmit(gameInvites);
                _context.SubmitChanges();
            }
        }
Пример #8
0
 public FriendStatus Fill(DB_User user, OnlineStatus status)
 {
     ID            = user.ID;
     PlayerID      = 0;
     Status        = status;
     UserName      = user.Name;
     CharacterName = "none";
     return(this);
 }
Пример #9
0
    public void Start()
    {
        DontDestroyOnLoad(gameObject);

        users = FindObjectOfType <DB_User>();
        scene = SceneManager.GetActiveScene();

        Req_Data_Country();
    }
Пример #10
0
        /// <summary>
        /// Looks up the loginSession provided and returns the user saved in that session.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        public User GetUserBySession(Guid session)
        {
            DB_User da_user = (from s in _context.DB_LoginSessions where s.Id == session select s.DB_User).FirstOrDefault();

            if (da_user == null)
            {
                throw new FOEServiceException(FOEStatusCodes.InvalidSession);
            }

            return(da_user.ToUser(FOEDataInclusion.Everything));
        }
Пример #11
0
        /// <summary>
        /// returns a User if found in the database, else throws an exception.
        /// </summary>
        /// <param name="userName"></param>
        /// <returns></returns>
        public User GetUserByUserName(string userName)
        {
            DB_User da_user = (from u in _context.DB_Users where u.UserName == userName select u).FirstOrDefault();

            if (da_user == null)
            {
                throw new FOEServiceException(FOEStatusCodes.UnknownUser, string.Format("Could not find user {0}.", userName));
            }

            return(da_user.ToUser(FOEDataInclusion.Everything));
        }
Пример #12
0
        public void CreateUser(User user)
        {
            var newUser = new DB_User()
            {
                Name     = user.Name,
                Surname  = user.Surname,
                Status   = user.Status,
                Login    = user.Login,
                Password = user.Password
            };

            db.Users.Create(newUser);
            db.Save();
        }
Пример #13
0
        /// <summary>
        /// Adds a user to the database
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        /// <param name="email"></param>
        /// <returns></returns>
        public User AddUser(string userName, string password, string email)
        {
            DB_User da_user = DB_User.FromUser(new User()
            {
                Password = password, UserName = userName
            }, _context);

            if (da_user == null)
            {
                throw new FOEServiceException(FOEStatusCodes.InternalError, "Creation of user failed.");
            }

            return(da_user.ToUser(FOEDataInclusion.Everything));
        }
Пример #14
0
    private void Start()
    {
        DontDestroyOnLoad(gameObject);
        apps           = FindObjectOfType <AppMessage>();
        users          = FindObjectOfType <DB_User>();
        products       = FindObjectOfType <DB_Product>();
        countries      = FindObjectOfType <DB_Country>();
        product_groups = FindObjectOfType <DB_ProductGroup>();
        scene_history  = FindObjectOfType <SceneHistory>();

        scene = SceneManager.GetActiveScene();

        Initialized();
    }
Пример #15
0
        public void EditUser(User user)
        {
            var temp = new DB_User()
            {
                Name     = user.Name,
                Surname  = user.Surname,
                Status   = user.Status,
                Login    = user.Login,
                Password = user.Password
            };

            db.Users.Update(temp);
            db.Save();
        }
Пример #16
0
        public void TestGetUser()
        {
            Data();
            List <DB_User> users = new List <DB_User>();
            DB_User        u1    = new DB_User();

            users.Add(u1);

            mockConteiner.Setup(a => a.Users).Returns(mockUsers.Object);
            mockUsers.Setup(a => a.Get()).Returns(users);
            User result = new User();

            result = Mapper.Map <DB_User, User>(u1);

            NUnit.Framework.Assert.AreEqual(result.Id, UserO.GetUser(0).Id);
        }
Пример #17
0
        public void TestCheckUser()
        {
            ResetData();
            List <DB_User> users = new List <DB_User>();
            DB_User        user1 = new DB_User();
            DB_User        user2 = new DB_User();
            string         login = "******";

            user1.Login = login;
            users.Add(user1);
            users.Add(user2);
            mockUsers.Setup(a => a.Get()).Returns(users);

            var result = UserO.CheckUser(login);

            Assert.AreEqual(true, result);
        }
Пример #18
0
        public void TestCheckUser()
        {
            Mapper_Config.Initialize();
            Data();
            List <DB_User> users = new List <DB_User>();
            DB_User        u1    = new DB_User();
            DB_User        u2    = new DB_User();

            users.Add(u1);
            users.Add(u2);

            mockConteiner.Setup(a => a.Users).Returns(mockUsers.Object);
            mockUsers.Setup(a => a.Get()).Returns(users);
            List <User> result = new List <User>();

            result = Mapper.Map <List <DB_User>, List <User> >(users);

            NUnit.Framework.Assert.AreEqual(true, UserO.CheckUser(null, null));
        }
Пример #19
0
        public HttpResponseMessage register([FromBody] USER u)
        {
            Result <USER> ru     = new Result <USER>();
            int           result = 0;
            string        id;
            List <USER>   lu = new List <USER>();


            try
            {
                result = DB_User.register(u, out id);

                if (result == 1)
                {
                    ru.code    = "2010";
                    ru.success = "true";
                    ru.message = "注册成功!";
                    u.id       = id;
                }
                else if (result == -1)
                {
                    ru.code    = "2013";
                    ru.success = "false";
                    ru.message = "用户名已存在";
                }
                else
                {
                    ru.code    = "2011";
                    ru.success = "false";
                    ru.message = "注册失败";
                }
            }
            catch (Exception e) {
                ru.code    = "2012";
                ru.success = "false";
                ru.message = e.Message;
            }
            lu.Add(u);
            ru.systemTime = Conn.GetTimeStamp();
            ru.data       = lu;

            return(Conn.toJson(ru));
        }
Пример #20
0
        public void TestGetUsers()
        {
            ResetData();
            List <DB_User> users = new List <DB_User>();
            DB_User        user1 = new DB_User();
            DB_User        user2 = new DB_User();

            users.Add(user1);
            users.Add(user2);

            mockUsers.Setup(a => a.Get()).Returns(users);
            List <User> expected = new List <User>();

            expected = Mapper.Map <List <DB_User>, List <User> >(users);

            var result = UserO.GetUsers();

            Assert.AreEqual(expected.Capacity, result.Capacity);
        }
        public ActionResult Register(string username, string password)
        {
            if (db.DB_User.Any(u => u.Username.Equals(username)))
            {
                return(Json(new { error = "Username already taken!" }));
            }

            DB_User user = new DB_User();

            user.Username = username;
            user.Password = Encryption.GetMD5Hash(password);
            user.UserType = 0;

            db.DB_User.Add(user);
            db.SaveChanges();

            Session["Username"] = username;
            return(Json(new { url = "/DB_Favourite/Index" }));
        }
Пример #22
0
        public void TestChangeBet()
        {
            BLL_AutoMapper.Initialize();
            ResetData();
            int     lot_id  = 1;
            int     user_id = 1;
            int     bet     = 100;
            DB_Lot  lot1    = new DB_Lot();
            DB_User user1   = new DB_User();

            lot1.LotId   = lot_id;
            lot1.Step    = 0;
            user1.UserId = user_id;

            mockUsers.Setup(a => a.FindById(user_id)).Returns(user1);
            mockLots.Setup(a => a.FindById(lot_id)).Returns(lot1);

            var result = LotO.ChangeBet(bet, user_id, lot_id);

            Assert.AreEqual(true, result);
        }
Пример #23
0
        public void TestCheckUser3()
        {
            ResetData();
            List <DB_User> users = new List <DB_User>();
            DB_User        user1 = new DB_User();
            DB_User        user2 = new DB_User();

            string name    = "name";
            string surname = "surname";
            string patr    = "patr";

            user1.Name       = name;
            user1.Surname    = surname;
            user1.Patronymic = patr;
            users.Add(user1);
            users.Add(user2);
            mockUsers.Setup(a => a.Get()).Returns(users);

            var result = UserO.CheckUser(name, surname, patr);

            Assert.AreEqual(true, result);
        }
Пример #24
0
        public void TestCheckUser2()
        {
            ResetData();
            List <DB_User> users = new List <DB_User>();
            DB_User        user1 = new DB_User();
            DB_User        user2 = new DB_User();

            string login    = "******";
            string password = "******";

            user1.Login    = login;
            user1.Password = password;
            user1.UserId   = 1;
            users.Add(user1);
            users.Add(user2);
            mockUsers.Setup(a => a.Get()).Returns(users);
            int expected = Mapper.Map <DB_User, User>(user1).UserId;

            var result = UserO.CheckUser(login, password).UserId;

            Assert.AreEqual(expected, result);
        }
Пример #25
0
        public HttpResponseMessage modUser([FromBody] USER u)
        {
            Result <USER> ru     = new Result <USER>();
            int           result = 0;

            try
            {
                result = DB_User.modUser(u);
                if (result == 1)
                {
                    ru.code    = "2030";
                    ru.success = "true";
                    ru.message = "修改成功!";
                }
                else if (result == -1)
                {
                    ru.code    = "2033";
                    ru.success = "false";
                    ru.message = "此手机号已注册过";
                }
                else
                {
                    ru.code    = "2031";
                    ru.success = "false";
                    ru.message = "修改失败";
                }
            }
            catch (Exception e) {
                ru.code    = "2032";
                ru.success = "false";
                ru.message = e.Message;
            }

            ru.systemTime = Conn.GetTimeStamp();
            ru.data       = null;

            return(Conn.toJson(ru));
        }
Пример #26
0
        public HttpResponseMessage login([FromBody] USER u)
        {
            Result <USER> ru = new Result <USER>();

            USER        ou     = new USER();
            int         result = 0;
            List <USER> lu     = new List <USER>();

            try
            {
                result = DB_User.Login(u, out ou);
                lu.Add(ou);

                if (result == 1)
                {
                    ru.code    = "2000";
                    ru.success = "true";
                    ru.message = "登录成功!";
                }
                else
                {
                    ru.code    = "2001";
                    ru.success = "false";
                    ru.message = "登录失败";
                }
            }
            catch (Exception e) {
                ru.code    = "2002";
                ru.success = "false";
                ru.message = e.Message;
            }


            ru.systemTime = Conn.GetTimeStamp();
            ru.data       = lu;

            return(Conn.toJson(ru));
        }
Пример #27
0
        public static bool SelectUser(int id, out DB_User entry)
        {
            var locked = false;

            entry = DB_User.Empty;
            if (!IsConnected)
            {
                return(false);
            }
            try
            {
                using (MySqlCommand _cmd = _connection.CreateCommand())
                {
                    _cmd.CommandText = $"SELECT login, phash, access, session FROM {tb_01} WHERE id={id};";
                    Monitor.Enter(_connection, ref locked);
                    using (MySqlDataReader _result = _cmd.ExecuteReader())
                    {
                        if (_result.HasRows && _result.Read())
                        {
                            entry.ID     = id;
                            entry.Name   = _result.GetString(0);
                            entry.Hash   = _result.GetString(1);
                            entry.Access = (AccessLevel)_result.GetByte(2);
                            entry.SID    = _result.GetNullString(3);
                            return(true);
                        }
                    }
                }
                return(false);
            }
            catch { return(false); }
            finally { if (locked)
                      {
                          Monitor.Exit(_connection);
                      }
            }
        }
Пример #28
0
        public HttpResponseMessage getTotalAmount([FromBody] USER u)
        {
            Result <USER> ru = new Result <USER>();

            USER        ou     = new USER();
            List <USER> result = new List <USER>();

            try
            {
                result = DB_User.getTotalAmount(u);

                if (result.Count > 0)
                {
                    ru.code    = "2050";
                    ru.success = "true";
                    ru.message = "获取成功!";
                }
                else
                {
                    ru.code    = "2051";
                    ru.success = "false";
                    ru.message = "无资料";
                }
            }
            catch (Exception e)
            {
                ru.code    = "2052";
                ru.success = "false";
                ru.message = e.Message;
            }


            ru.systemTime = Conn.GetTimeStamp();
            ru.data       = result;

            return(Conn.toJson(ru));
        }