public async void registerButton_Clicked(System.Object sender, System.EventArgs e)
        {
            String email = emailForm.Text;
            String pwd   = passForm.Text;

            UserCheck credential = new UserCheck(email, pwd);


            try
            {
                //if (registerButton.IsPressed && credential.checkUserInfo())
                //{

                var    log   = DependencyService.Get <FireAuth>();
                String token = await log.RegisterWithEmailPassword(email, pwd);
                await DisplayAlert("REGISTERED", "successful logged in", "ok");

                Console.WriteLine("utente registrato");

                //}
                //else
                //    await DisplayAlert("ERROR", "check forms", "OK");
            }
            catch (Exception myEx)
            {
                Console.WriteLine(myEx.StackTrace);
            }
        }
Beispiel #2
0
        public ActionResult UserCreate(UserVM userVM)
        {
            var success = false;
            var message = (string)null;

            try
            {
                var usercheck = new UserCheck
                {
                    Name = userVM.Name,
                };

                DbContext.UserChecks.Add(usercheck);
                DbContext.SaveChanges();
                success = true;
            }
            catch (Exception ex)
            {
                message = ex.Message;
            }
            if (success)
            {
                return(RedirectToAction("UserReg", "Home"));
            }
            return(UserCheck());
        }
Beispiel #3
0
        /// <summary>
        /// 检测是否我听众或我收听的人
        /// </summary>
        /// <param name="requestUrl">API请求地址</param>
        /// <param name="flag">检查类型</param>
        /// <param name="names">帐户名</param>
        /// <returns>操作结果</returns>
        public UserCheckData Check(string requestUrl, UserCheck flag, params string[] names)
        {
            Parameters parameters = new Parameters();

            parameters.Add("format", this.ResponseDataFormat.ToString().ToLower());
            parameters.Add("flag", (byte)flag);
            parameters.Add("names", string.Join(",", names));
            return(this.GetResponseData <UserCheckData>(requestUrl, parameters));
        }
        /// <summary>
        /// 创建一个用户
        /// </summary>
        /// <param name="usr">要创建的用户信息</param>
        /// <returns>创建是否成功</returns>
        public static string CreateUser(User usr)
        {
            if (!UserCheck.CheckUsername(usr.name))
            {
                return("用户名格式不对");
            }
            if (!UserCheck.CheckUserpswd(usr.password))
            {
                return("用户密码格式不对");
            }
            int result = int.Parse((string)Request.HttpRequest(usr, "PATCH", "CreateUser"));

            return(result.ToString());//ID
        }
 public Member Login(UserCheck userlogin)
 {
     try
     {
         Member validation = _context.Members.Where(m => m.Email.ToUpper() == userlogin.Email.ToUpper() && m.Password == userlogin.Password).FirstOrDefault();
         if (validation != null)
         {
             log.Info("Lyckad inloggning " + validation.Email);
             return(validation);
         }
         else
         {
             log.Error("Misslyckad inloggning " + userlogin.Email);
             return(null);
         }
     }
     catch (Exception)
     {
         return(null);
     }
 }
        /// <summary>
        /// 更新用户
        /// </summary>
        /// <param name="usr">要更新的用户信息</param>
        /// <returns>更新是否成功</returns>
        public static string UpdateUser(User usr)
        {
            if (!UserCheck.CheckUsername(usr.name))
            {
                return("用户名格式不对");
            }
            if (!UserCheck.CheckUserpswd(usr.password))
            {
                return("用户密码格式不对");
            }
            string result = (string)Request.HttpRequest(usr, "PUT", "UpdateUser");

            if (result == "true")
            {
                return("true");
            }
            else
            {
                return("false");
            }
        }
Beispiel #7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            #region 接受参数

            strGuid = Request["xmguid"] != null ? Request["xmguid"] : "";

            checkReturnHistory();
            #endregion

            #region 初始化信息

            form.TableName   = "tz_Project"; //表名
            form.Key         = "ProGuid";    //主键
            form.KeyValue    = strGuid;      //主键的值
            form.CurrentUser = CurrentUser;
            document         = form.SetViewData(null);

            string prostate = "";
            if (!UserCheck.checkIsAdmin(CurrentUser.user.UserLoginName))
            {
                isAdmin = false;
                DataSet ds = db.ExecuteDataSet(" select * from tz_Project where ProGuid='" + strGuid + "'");
                prostate = ds.Tables[0].Rows[0]["ProState"].ToString();
                //未提交或者退回的项目申请提供编辑功能
                if (prostate == "" || prostate == "退回")
                {
                    isEditable = true;
                }
            }
            else
            {
                isAdmin    = true;
                isEditable = true;
            }

            #endregion

            System.GC.Collect();
        }
        //Checks if login and password are correct
        private ServerUser CheckUserInfo(TcpClient client, UserCheck userCheck)
        {
            string    passPhrase = "passPhrase";
            Encrypter encrypter  = new Encrypter();

            //Checks if needed files/directories exist
            CheckExistedFiles(Convert.ToInt32(userCheck.HouseNumber));

            Users users = JsonConvert.DeserializeObject <Users>(File.ReadAllText(@$ "data/house-{userCheck.HouseNumber}/students.json"));

            //For each user check if given credentials corespond to anyone
            foreach (var user in users.AllUsers)
            {
                if (user.Login == userCheck.Login && user.HouseNumber == userCheck.HouseNumber &&
                    encrypter.Decrypt(user.Password, passPhrase) == encrypter.Decrypt(userCheck.Password, passPhrase))
                {
                    return(user);
                }
            }

            return(null);
        }
        public async void loginButton_Clicked(System.Object sender, System.EventArgs e)
        {
            String email = emailForm.Text;
            String pwd   = passForm.Text;

            UserCheck credential = new UserCheck(email, pwd);

            try
            {
                //if (credential.checkUserInfo() && loginButton.IsPressed)
                //{
                var    log   = DependencyService.Get <FireAuth>();
                String token = await log.LoginWithEmailPassword(email, pwd);
                await DisplayAlert("LOGGED", token, "ok");

                //}
                //else
                //  await DisplayAlert("LOGIN ERROR", "check forms", "OK");
            }
            catch (Exception myEx)
            {
                Console.WriteLine(myEx.StackTrace);
            }
        }
Beispiel #10
0
        /// <summary>
        /// API授权验证 1:验证通过,0:无权限
        /// </summary>
        /// <param name="appid"></param>
        /// <param name="apppwd"></param>
        /// <param name="signname"></param>
        /// <param name="time"></param>
        /// <param name="functionName"></param>
        /// <param name="appUrl"></param>
        /// <param name="code"></param>
        /// <returns></returns>
        public static int ApiAuthorizationVerify(JObject sinfoObj, JObject infoObj, string functionname, out UserCheck _uc)
        {
            _uc = null;
            string securityJson = WebCommon.ApiSecurityStringOfJson(sinfoObj, functionname, infoObj, "companysix");
            string returntext   = "";
            int    returntype   = 1;

            _uc = WebCommon.FxtUserCenterService_GetCompanyBySignName(securityJson, out returntext, out returntype);
            if (returntype == 1)
            {
                return(1);
            }
            return(0);
            ////未获取到key
            //string appKey = ApiFunctionArgsVerify(appid, apppwd, signname, functionName, appUrl);
            //if (string.IsNullOrEmpty(appKey))
            //{
            //    return 0;
            //}
            ////加密验证
            //int result = ApiCodeVerify(appid, apppwd, signname, time, code);
            //if (result != 1)
            //{
            //    return 0;
            //}
            //return 1;
        }
Beispiel #11
0
 /// <summary>
 /// 检测是否我听众或我收听的人
 /// </summary>
 /// <param name="requestUrl">API请求地址</param>
 /// <param name="flag">检查类型</param>
 /// <param name="names">帐户名</param>
 /// <returns>操作结果</returns>
 public UserCheckData Check(string requestUrl, UserCheck flag, params string[] names)
 {
     Parameters parameters = new Parameters();
     parameters.Add("format", this.ResponseDataFormat.ToString().ToLower());
     parameters.Add("flag", (byte)flag);
     parameters.Add("names", string.Join(",", names));
     return this.GetResponseData<UserCheckData>(requestUrl, parameters);
 }
Beispiel #12
0
 /// <summary>
 /// 采用默认API请求地址检测是否我听众或我收听的人
 /// </summary>
 /// <param name="flag">0 检测粉丝,1检测偶像</param>
 /// <param name="names">其他人的帐户名列表(最多30个)</param>
 /// <returns>检查结果</returns>
 public UserCheckData Check(UserCheck flag, params string[] names)
 {
     return this.Check("http://open.t.qq.com/api/friends/check", flag, names);
 }
Beispiel #13
0
 /// <summary>
 /// 采用默认API请求地址检测是否我听众或我收听的人
 /// </summary>
 /// <param name="flag">0 检测粉丝,1检测偶像</param>
 /// <param name="names">其他人的帐户名列表(最多30个)</param>
 /// <returns>检查结果</returns>
 public UserCheckData Check(UserCheck flag, params string[] names)
 {
     return(this.Check("http://open.t.qq.com/api/friends/check", flag, names));
 }
Beispiel #14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sinfo">加密验证参数{appid:"",apppwd:"",signname:"",time:"",code:""}</param>
        /// <param name="functionname">功能名</param>
        /// <param name="functionparameter">功能参数</param>
        /// <returns></returns>
        public Stream Entrance(string type, string sinfo, string info)//(string type, string name, string date, string code, string parameter)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();

            ResultData result = new ResultData();

            if (string.IsNullOrEmpty(sinfo) || string.IsNullOrEmpty(info))
            {
                result.returntext = "验证码错误";
                return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
            }
            JObject sinfoObj     = JObject.Parse(sinfo);
            string  appid        = sinfoObj.Value <string>("appid");
            string  apppwd       = sinfoObj.Value <string>("apppwd");
            string  signname     = sinfoObj.Value <string>("signname");
            string  time         = sinfoObj.Value <string>("time");
            string  code         = sinfoObj.Value <string>("code");
            string  functionname = sinfoObj.Value <string>("functionname");
            string  appUrl       = "";
            JObject infoObj      = JObject.Parse(info);
            JObject appinfoObj   = infoObj["appinfo"] as JObject;
            JObject uinfoObj     = infoObj["uinfo"] as JObject;
            string  username     = uinfoObj.Value <string>("username");
            JObject funinfoObj   = new JObject();

            if (infoObj["funinfo"] != null)
            {
                funinfoObj = infoObj["funinfo"] as JObject;
            }
            log.Info(sinfo);
            log.Info(info);

            UserCheck uc           = null;
            int       verifyResult = ApiCheckManager.ApiAuthorizationVerify(sinfoObj, infoObj, functionname, out uc);

            if (verifyResult != 1)
            {
                result.returntext = "无权限访问此API";
                return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
            }
            else
            {
                object     objClass = null;
                MethodInfo method   = apiCommon.EntranceHelper.GetMethodInfo(type, functionname, out objClass);
                if (method == null || objClass == null)
                {
                    result.returntext = "未找到方法!";
                    return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                }
                try
                {
                    Type         objClassType = objClass.GetType();
                    PropertyInfo UserName     = objClassType.GetProperty("UserName");
                    PropertyInfo SignName     = objClassType.GetProperty("SignName");
                    PropertyInfo FxtCompanyId = objClassType.GetProperty("FxtCompanyId");
                    UserName.SetValue(objClass, username, null);
                    SignName.SetValue(objClass, signname, null);
                    FxtCompanyId.SetValue(objClass, uc.companyid, null);
                    ParameterInfo[] parameterInfos = method.GetParameters();
                    object[]        objvalue       = null;
                    if (funinfoObj.Count != parameterInfos.Length)
                    {
                        result.returntext = "方法参数有误!";
                        return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                    }
                    objvalue = new object[parameterInfos.Length];
                    for (int i = 0; i < parameterInfos.Length; i++)
                    {
                        ParameterInfo parameterInfo = parameterInfos[i];
                        if (funinfoObj[parameterInfo.Name] == null)
                        {
                            result.returntext = "方法参数不存在!";
                            return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                        }
                        if (funinfoObj[parameterInfo.Name].Type == JTokenType.Null)
                        {
                            objvalue[i] = null;
                            continue;
                        }
                        objvalue[i] = CommonUtility.valueType(parameterInfo.ParameterType, funinfoObj.Value <JValue>(parameterInfo.Name).Value);
                    }
                    var o = method.Invoke(objClass, objvalue);

                    if (o is ResultData)
                    {
                        result = o as ResultData;
                    }
                    else
                    {
                        var to = o as Task <ResultData>;
                        result = to.Result;
                    }
                    log.Info("data:" + result.data);
                    log.Info("returntext:" + result.returntext);
                    log.Info("returntype:" + result.returntype);

                    sw.Stop();
                    TimeSpan ts2 = sw.Elapsed;
                    log.Info("functionname:" + functionname + ",操作总共花费" + ts2.TotalMilliseconds + "ms.");

                    return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException exe)
                {
                    log.Error("实体验证失败:" + exe.Message);
                    result.returntext = "实体验证失败!";
                    return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                }
                catch (Exception exe)
                {
                    string errorMessage = string.Format("type:{0},\r\n sinfo:{1}, \r\n info:{2}  \r\n error:{3}",
                                                        type == null ? "null" : type, sinfo == null ? "null" : sinfo, info == null ? "null" : info, exe.Message == null ? "null" : exe.Message
                                                        );
                    //log.Error(errorMessage, exe);
                    log.Error(exe);
                    result.returntext = "系统异常!";
                    return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                }
            }
        }
Beispiel #15
0
        public Stream UpLoadFile(System.IO.Stream stream, string type, string sinfo, string info)
        {
            log.Info("sinfo:" + sinfo);
            log.Info("info:" + info);
            ResultData result = new ResultData();

            if (string.IsNullOrEmpty(sinfo) || string.IsNullOrEmpty(info))
            {
                result.returntext = "验证码错误!";
                return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
            }
            JObject sinfoObj     = JObject.Parse(sinfo);
            string  appid        = sinfoObj.Value <string>("appid");
            string  apppwd       = sinfoObj.Value <string>("apppwd");
            string  signname     = sinfoObj.Value <string>("signname");
            string  time         = sinfoObj.Value <string>("time");
            string  code         = sinfoObj.Value <string>("code");
            string  functionname = sinfoObj.Value <string>("functionname");
            string  appUrl       = "";
            JObject infoObj      = JObject.Parse(info);
            JObject appinfoObj   = infoObj["appinfo"] as JObject;
            JObject uinfoObj     = infoObj["uinfo"] as JObject;
            string  username     = uinfoObj.Value <string>("username");
            JObject funinfoObj   = new JObject();

            if (infoObj["funinfo"] != null)
            {
                funinfoObj = infoObj["funinfo"] as JObject;
            }
            UserCheck uc           = null;
            int       verifyResult = ApiCheckManager.ApiAuthorizationVerify(sinfoObj, infoObj, functionname, out uc);

            if (verifyResult != 1)
            {
                result.returntext = "无权限访问此API";
                return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
            }
            else
            {
                object     objClass = null;
                MethodInfo method   = apiCommon.EntranceHelper.GetMethodInfo(type, functionname, out objClass);
                if (method == null || objClass == null)
                {
                    result.returntext = "未找到对象!";
                    return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                }
                try
                {
                    Type         objClassType = objClass.GetType();
                    PropertyInfo UserName     = objClassType.GetProperty("UserName");
                    PropertyInfo SignName     = objClassType.GetProperty("SignName");
                    PropertyInfo FxtCompanyId = objClassType.GetProperty("FxtCompanyId");
                    UserName.SetValue(objClass, username, null);
                    SignName.SetValue(objClass, signname, null);
                    FxtCompanyId.SetValue(objClass, uc.companyid, null);
                    ParameterInfo[] parameterInfos = method.GetParameters();
                    object[]        objvalue       = null;
                    if (funinfoObj.Count + 1 != parameterInfos.Length)
                    {
                        result.returntext = "未找到对象!";
                        return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                    }
                    objvalue = new object[parameterInfos.Length];
                    for (int i = 0; i < parameterInfos.Length; i++)
                    {
                        if (i == 0)
                        {
                            objvalue[i] = stream;
                            continue;
                        }
                        ParameterInfo parameterInfo = parameterInfos[i];
                        if (funinfoObj[parameterInfo.Name] == null)
                        {
                            result.returntext = "未找到对象!";
                            return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                        }
                        if (funinfoObj[parameterInfo.Name].Type == JTokenType.Null)
                        {
                            objvalue[i] = null;
                            continue;
                        }
                        objvalue[i] = CommonUtility.valueType(parameterInfo.ParameterType, funinfoObj.Value <JValue>(parameterInfo.Name).Value);
                    }
                    var        o = method.Invoke(objClass, objvalue);
                    ResultData obj;
                    if (o is ResultData)
                    {
                        obj = o as ResultData;
                    }
                    else
                    {
                        var to = o as Task <ResultData>;
                        obj = to.Result;
                    }
                    return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                }
                catch (Exception exe)
                {
                    string errorMessage = string.Format("type:{0},\r\n sinfo:{1}, \r\n info:{2}  \r\n error:{3}",
                                                        type == null ? "null" : type, sinfo == null ? "null" : sinfo, info == null ? "null" : info, exe.Message == null ? "null" : exe.Message
                                                        );
                    log.Error(exe);
                    result.returntext = "系统异常!";
                    return(new MemoryStream(Encoding.UTF8.GetBytes(result.ToJSONjss())));
                }
            }
        }
Beispiel #16
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        /// <param name="sinfo">加密验证参数{appid:"",apppwd:"",signname:"",time:"",code:""}</param>
        /// <param name="functionname">功能名</param>
        /// <param name="functionparameter">功能参数</param>
        /// <returns></returns>
        public ResultData Entrance(string type, string sinfo, string info)//(string type, string name, string date, string code, string parameter)
        {
            if (string.IsNullOrEmpty(sinfo) || string.IsNullOrEmpty(info))
            {
                return(new ResultData {
                    returntype = 0, returntext = "验证码错误"
                });
            }
            JObject sinfoObj     = JObject.Parse(sinfo);
            string  appid        = sinfoObj.Value <string>("appid");
            string  apppwd       = sinfoObj.Value <string>("apppwd");
            string  signname     = sinfoObj.Value <string>("signname");
            string  time         = sinfoObj.Value <string>("time");
            string  code         = sinfoObj.Value <string>("code");
            string  functionname = sinfoObj.Value <string>("functionname");
            string  appUrl       = "";
            JObject infoObj      = JObject.Parse(info);
            JObject appinfoObj   = infoObj["appinfo"] as JObject;
            JObject uinfoObj     = infoObj["uinfo"] as JObject;
            string  username     = uinfoObj.Value <string>("username");
            JObject funinfoObj   = new JObject();

            if (infoObj["funinfo"] != null)
            {
                funinfoObj = infoObj["funinfo"] as JObject;
            }
            log.Info(sinfo);
            log.Info(info);

            UserCheck uc           = null;
            int       verifyResult = ApiCheckManager.ApiAuthorizationVerify(sinfoObj, infoObj, functionname, out uc);

            if (verifyResult != 1)
            {
                return(new ResultData {
                    returntype = 0, returntext = "无权限访问此API"
                });
            }
            else
            {
                object     objClass = null;
                MethodInfo method   = apiCommon.EntranceHelper.GetMethodInfo(type, functionname, out objClass);
                if (method == null || objClass == null)
                {
                    return(new ResultData {
                        returntype = 0, returntext = "未找到对象!"
                    });
                }
                try
                {
                    Type         objClassType = objClass.GetType();
                    PropertyInfo UserName     = objClassType.GetProperty("UserName");
                    PropertyInfo SignName     = objClassType.GetProperty("SignName");
                    PropertyInfo FxtCompanyId = objClassType.GetProperty("FxtCompanyId");
                    UserName.SetValue(objClass, username, null);
                    SignName.SetValue(objClass, signname, null);
                    FxtCompanyId.SetValue(objClass, uc.companyid, null);
                    ParameterInfo[] parameterInfos = method.GetParameters();
                    object[]        objvalue       = null;
                    if (funinfoObj.Count != parameterInfos.Length)
                    {
                        return(new ResultData {
                            returntype = 0, returntext = "未找到对象!"
                        });
                    }
                    objvalue = new object[parameterInfos.Length];
                    for (int i = 0; i < parameterInfos.Length; i++)
                    {
                        ParameterInfo parameterInfo = parameterInfos[i];
                        if (funinfoObj[parameterInfo.Name] == null)
                        {
                            return(new ResultData {
                                returntype = 0, returntext = "未找到对象!"
                            });
                        }
                        if (funinfoObj[parameterInfo.Name].Type == JTokenType.Null)
                        {
                            objvalue[i] = null;
                            continue;
                        }
                        objvalue[i] = CommonUtility.valueType(parameterInfo.ParameterType, funinfoObj.Value <JValue>(parameterInfo.Name).Value);
                    }
                    var        o = method.Invoke(objClass, objvalue);
                    ResultData obj;
                    if (o is ResultData)
                    {
                        obj = o as ResultData;
                    }
                    else
                    {
                        var to = o as Task <ResultData>;
                        obj = to.Result;
                    }
                    log.Info(obj.data);
                    log.Info(obj.returntext);
                    log.Info(obj.returntype);
                    return(obj);
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException exe)
                {
                    log.Error("实体验证失败:" + exe.Message);
                    return(new ResultData {
                        returntype = 0, returntext = "系统异常", debug = exe.Message
                    });
                }
                catch (Exception exe)
                {
                    string errorMessage = string.Format("type:{0},\r\n sinfo:{1}, \r\n info:{2}  \r\n error:{3}",
                                                        type == null ? "null" : type, sinfo == null ? "null" : sinfo, info == null ? "null" : info, exe.Message == null ? "null" : exe.Message
                                                        );
                    //log.Error(errorMessage, exe);
                    log.Error(exe);
                    return(new ResultData {
                        returntype = 0, returntext = "系统异常", debug = exe.Message
                    });
                }
            }
        }
        //Handles received packages based on their types
        private void HandleDataQuery(TcpClient client, ServerPackage package)
        {
            //Based on the package type returns needed information
            switch (package.Type)
            {
            case PackageType.USER_CHECK:
            {
                CheckUdp(package.UdpServerPort);

                UserCheck  userCheck = JsonConvert.DeserializeObject <UserCheck>(package.Message);
                ServerUser user      = CheckUserInfo(client, userCheck);

                //Checks if user with given credentials exists
                if (user == null)
                {
                    //Sends "invalid data" error if user doesn't exist
                    SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.INVALID_DATA, "", -1)));
                }
                else
                {
                    Users users = JsonConvert.DeserializeObject <Users>(File.ReadAllText(@$ "data/house-{userCheck.HouseNumber}/students.json"));

                    Dictionary <int, string> usersInfo = new Dictionary <int, string>();

                    //Adds all student's Name and ID in a dictionary
                    foreach (var u in users.AllUsers)
                    {
                        usersInfo.Add(u.ID, u.Name);
                    }

                    //Generates new object with all needed info as a responce
                    UserInfo userInfo = new UserInfo()
                    {
                        Type               = user.Type,
                        ID                 = user.ID,
                        Name               = user.Name,
                        LastName           = user.LastName,
                        HouseNumber        = user.HouseNumber,
                        Room               = user.Room,
                        TotalStudentNumber = users.TotalStudentNumber,
                        StudentsInfo       = usersInfo
                    };

                    string json = JsonConvert.SerializeObject(userInfo);

                    //Sends responce
                    SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.USER_INFO, json, -1)));
                }
                break;
            }

            case PackageType.GET_ALL_USERS:
            {
                CheckUdp(package.UdpServerPort);

                Users users = JsonConvert.DeserializeObject <Users>(File.ReadAllText(@$ "data/house-{package.Message}/students.json"));

                Dictionary <int, string> usersInfo = new Dictionary <int, string>();

                //Adds all student's Name and ID in a dictionary
                foreach (var u in users.AllUsers)
                {
                    usersInfo.Add(u.ID, u.Name);
                }

                string json = JsonConvert.SerializeObject(usersInfo);

                SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.ALL_USERS, json, -1)));

                break;
            }

            case PackageType.GET_HOUSE_RULES:
            {
                //Checks if needed files/directories exist
                CheckExistedFiles(Convert.ToInt32(package.Message));
                CheckUdp(package.UdpServerPort);

                //Sends responce
                SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.HOUSE_RULES,
                                                                                                File.ReadAllText(@$ "data/house-{package.Message}/house-rules.json"), -1)));
                break;
            }

            case PackageType.UPDATE_HOUSE_RULES:
            {
                HouseRules houseRules = JsonConvert.DeserializeObject <HouseRules>(package.Message);

                //Checks if needed files/directories exist
                CheckExistedFiles(Convert.ToInt32(houseRules.HouseNumber));
                CheckUdp(package.UdpServerPort);

                //Update file
                File.WriteAllText(@$ "data/house-{houseRules.HouseNumber}/house-rules.json", package.Message);

                SendUpdated(package.UdpServerPort);

                //Sends responce
                SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.RECEIVED, "", -1)));
                break;
            }

            case PackageType.GET_MANDATORY_RULES:
            {
                //Checks if needed files/directories exist
                CheckExistedFiles(Convert.ToInt32(package.Message));
                CheckUdp(package.UdpServerPort);

                //Sends responce
                SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.MANDATORY_RULES,
                                                                                                File.ReadAllText(@$ "data/house-{package.Message}/mandatory-rules.json"), -1)));
                break;
            }

            case PackageType.UPDATE_MANDATORY_RULES:
            {
                MandatoryRules mandatoryRules = JsonConvert.DeserializeObject <MandatoryRules>(package.Message);

                //Checks if needed files/directories exist
                CheckExistedFiles(Convert.ToInt32(mandatoryRules.HouseNumber));
                CheckUdp(package.UdpServerPort);

                SendUpdated(package.UdpServerPort);

                //Update file
                File.WriteAllText(@$ "data/house-{mandatoryRules.HouseNumber}/mandatory-rules.json", package.Message);

                //Sends responce
                SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.RECEIVED, "", -1)));
                break;
            }

            case PackageType.GET_COMPLAINTS:
            {
                //Checks if needed files/directories exist
                CheckExistedFiles(Convert.ToInt32(package.Message));
                CheckUdp(package.UdpServerPort);

                //Sends responce
                SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.COMPLAINTS,
                                                                                                File.ReadAllText(@$ "data/house-{package.Message}/complaints.json"), -1)));
                break;
            }

            case PackageType.UPDATE_COMPLAINTS:
            {
                MandatoryRules mandatoryRules = JsonConvert.DeserializeObject <MandatoryRules>(package.Message);

                //Checks if needed files/directories
                CheckExistedFiles(Convert.ToInt32(mandatoryRules.HouseNumber));
                CheckUdp(package.UdpServerPort);

                SendUpdated(package.UdpServerPort);

                //Update file
                File.WriteAllText(@$ "data/house-{mandatoryRules.HouseNumber}/complaints.json", package.Message);

                //Sends responce
                SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.RECEIVED, "", -1)));
                break;
            }

            case PackageType.GET_MESSAGES:
            {
                //Checks if needed files/directories exist
                CheckExistedFiles(Convert.ToInt32(package.Message));
                CheckUdp(package.UdpServerPort);

                //Sends responce
                SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.MESSAGES,
                                                                                                File.ReadAllText(@$ "data/house-{package.Message}/messages.json"), -1)));
                break;
            }

            case PackageType.UPDATE_MESSAGES:
            {
                ChatHistory chathistory = JsonConvert.DeserializeObject <ChatHistory>(package.Message);

                //Checks if needed files/directories
                CheckExistedFiles(Convert.ToInt32(chathistory.HouseNumber));
                CheckUdp(package.UdpServerPort);

                //Update file
                File.WriteAllText(@$ "data/house-{chathistory.HouseNumber}/messages.json", package.Message);

                SendUpdated(package.UdpServerPort);

                //Sends responce
                SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.RECEIVED, "", -1)));
                break;
            }

            case PackageType.UPDATE_PASSWORD:
            {
                CheckUdp(package.UdpServerPort);
                PasswordChange passwordChange = JsonConvert.DeserializeObject <PasswordChange>(package.Message);

                Users users = JsonConvert.DeserializeObject <Users>(File.ReadAllText(@$ "data/house-{passwordChange.HouseNumber}/students.json"));

                //Searches for login of the user based on his ID
                string login = users.AllUsers.Find(x => x.ID == passwordChange.ID).Login;

                UserCheck  userCheck = new UserCheck(login, passwordChange.CurrentPassword, passwordChange.HouseNumber);
                ServerUser user      = CheckUserInfo(client, userCheck);

                //Checks if user with given credentials exists
                if (user == null)
                {
                    //Sends "invalid data" error if user doesn't exist
                    SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.INVALID_DATA, "", -1)));
                }
                else
                {
                    foreach (var u in users.AllUsers)
                    {
                        //Searches needed user and changes his password
                        if (u.ID == user.ID)
                        {
                            u.Password = passwordChange.NewPassword;
                            break;
                        }
                    }

                    string json = JsonConvert.SerializeObject(users, Formatting.Indented);
                    File.WriteAllText(@$ "data/house-{userCheck.HouseNumber}/students.json", json);

                    SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.PASSWORD_CHANGED, "", -1)));
                }
                break;
            }

            case PackageType.CREATE_NEW_USER:
            {
                CheckUdp(package.UdpServerPort);
                ServerUser newUser = JsonConvert.DeserializeObject <ServerUser>(package.Message);

                Users users  = JsonConvert.DeserializeObject <Users>(File.ReadAllText(@$ "data/house-{newUser.HouseNumber}/students.json"));
                int   lastId = users.AllUsers.Max(x => x.ID);
                lastId++;

                newUser.ID = lastId;

                //If there are no users with the same login - proceed
                if (users.AllUsers.Any(x => x.Login == newUser.Login))
                {
                    SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.USER_EXISTS, "", -1)));
                }
                else
                {
                    users.AllUsers.Add(newUser);
                    users.TotalStudentNumber++;

                    string json = JsonConvert.SerializeObject(users, Formatting.Indented);
                    File.WriteAllText(@$ "data/house-{newUser.HouseNumber}/students.json", json);

                    HouseRules houseRules = JsonConvert.DeserializeObject <HouseRules>(
                        File.ReadAllText(@$ "data/house-{newUser.HouseNumber}/house-rules.json"));

                    foreach (var rule in houseRules.AllRules)
                    {
                        if (rule.ApprovalState)
                        {
                            rule.StudentsApproval.Add(newUser.ID, true);
                        }
                        else
                        {
                            rule.StudentsApproval.Add(newUser.ID, false);
                        }

                        rule.OrderOfStudents.Add(newUser.ID);
                    }

                    json = JsonConvert.SerializeObject(houseRules, Formatting.Indented);
                    File.WriteAllText(@$ "data/house-{newUser.HouseNumber}/house-rules.json", json);

                    SendMessage(package.Type, client, JsonConvert.SerializeObject(new ServerPackage(PackageType.USER_CREATED, "", -1)));
                }

                SendUpdated(package.UdpServerPort);
                break;
            }
            }
        }