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); } }
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()); }
/// <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"); } }
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); } }
/// <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; }
/// <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> /// 采用默认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); }
/// <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)); }
/// <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()))); } } }
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()))); } } }
/// <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; } } }