示例#1
0
        public UserLoginPostBackcode Post(UserRegisterPostParam param)
        {
            UserLoginPostBackcode backcode = new UserLoginPostBackcode();

            if (context.Users.Any(c => c.LoginName == param.LoginName))
            {
                backcode.Code = 201;
                backcode.Msg  = "当前账户名已存在";
            }
            else
            {
                DB.User user = new DB.User();
                user.IdCard    = param.IdCard;
                user.LoginName = param.LoginName;
                user.LoginPwd  = param.LoginPwd;
                user.RealName  = param.RealName;
                user.WorkCard  = param.WorkCard;
                user.Enable    = true;

                context.Users.Add(user);
                context.SaveChanges();

                HttpContext.Session.SetObjectAsJson(SessionNames.LoginUser, user);
            }

            return(backcode);
        }
示例#2
0
        private ExecutionAuthResult CheckUserState(DB.User data, string comment = null)
        {
            if (data.State == DB.UserState.Active)
            {
                if (data.BlockedUntil > DateTime.Now.Timestamp())
                {
                    return(new ExecutionAuthResult(eAuthResult.BlockedUntil, "Учетная запись заблокирована до " + (new DateTime()).FromUnixtime(data.BlockedUntil).ToString("yyyy-mm-dd HH:MM") +
                                                   (!string.IsNullOrEmpty(data.BlockedReason) ? " по причине: " + data.BlockedReason : ".")));
                }

                return(new ExecutionAuthResult(eAuthResult.Success));
            }
            else if (data.State == DB.UserState.RegisterNeedConfirmation)
            {
                return(new ExecutionAuthResult(eAuthResult.RegisterNeedConfirmation, "Необходимо подтвердить регистрацию путем перехода по ссылке из письма, отправленного на указанный при регистрации Email-адрес."));
            }
            else if (data.State == DB.UserState.RegisterWaitForModerate)
            {
                return(new ExecutionAuthResult(eAuthResult.RegisterWaitForModerate, "Заявка на регистрацию еще не проверена администратором."));
            }
            else if (data.State == DB.UserState.RegisterDecline)
            {
                var msg = "Заявка на регистрацию отклонена администратором.";
                return(new ExecutionAuthResult(eAuthResult.RegisterDecline, !string.IsNullOrEmpty(comment) ? $"{msg}\r\n\r\nПричина: {comment}" : msg));
            }
            else if (data.State == DB.UserState.Disabled)
            {
                var msg = "Учетная запись отключена.";
                return(new ExecutionAuthResult(eAuthResult.Disabled, !string.IsNullOrEmpty(comment) ? $"{msg}\r\n\r\nПричина: {comment}" : msg));
            }
            else
            {
                return(new ExecutionAuthResult(eAuthResult.UnknownError, "Ошибка при авторизации"));
            }
        }
示例#3
0
文件: srvUser.cs 项目: jiqsaw/kajal
        public User FbDataSave(FacebookUser FbData)
        {
            DB.User userDB = null;
            userDB = GetUserByFbId(FbData.FbId);

            if (userDB == null)
            {
                userDB            = new DB.User();
                userDB.FbId       = FbData.FbId;
                userDB.CreateDate = DateTime.Now;
            }
            userDB.Name       = FbData.Name;
            userDB.FirstName  = FbData.FirstName;
            userDB.LastName   = FbData.LastName;
            userDB.Gender     = FbData.Gender;
            userDB.Email      = FbData.Email;
            userDB.Locale     = FbData.Locale;
            userDB.PictureUrl = FbData.PictureUrl;
            userDB.UserName   = "";   // FbData.Username;
            userDB.Birthday   = null; // FbData.Birthday;
            userDB.Link       = FbData.Link;


            Save(userDB);

            return(userDB);
        }
示例#4
0
 public bool DeleteUser(Guid userId)
 {
     try
     {
         using (var db = new DB.DBEntities())
         {
             var oldData = db.User.Where(c => c.Id == userId).FirstOrDefault();
             if (oldData == null)
             {
                 return(false);
             }
             var temp = new DB.User()
             {
                 Address      = oldData.Address,
                 CreateBy     = oldData.CreateBy,
                 CreateDate   = oldData.CreateDate,
                 Enable       = oldData.Enable,
                 Id           = oldData.Id,
                 ModifiedDate = oldData.ModifiedDate.HasValue ? oldData.ModifiedDate.Value : new DateTime(),
                 ModifiedBy   = oldData.ModifiedBy,
                 Password     = oldData.Password,
                 Phone        = oldData.Phone,
                 UserName     = oldData.UserName
             };
             temp.Enable = false;
             db.Entry(oldData).CurrentValues.SetValues(temp);
             db.SaveChanges();
             return(true);
         }
     }
     catch
     {
         return(true);
     }
 }
示例#5
0
        public JsonResult ProfileData()
        {
            using (DB.IObjectRepository tdb = DBContext.Create())
            {
                DB.User lUser = CheckPoint.Instance.GetUser(tdb);

                UserProfile lProfile = new UserProfile()
                {
                    userName         = lUser.UserName,
                    firstName        = lUser.FirstName,
                    lastName         = lUser.LastName,
                    phone            = lUser.Phone,
                    email            = lUser.Email,
                    okayToContact    = lUser.OkayToContact.HasValue ? lUser.OkayToContact.Value : false,
                    organization     = lUser.ExternalOrganizationName,
                    organizationType = lUser.ExternalOrganizationType
                };

                if (!string.IsNullOrEmpty(AppSettings.OpenIdConfigUrl))
                {
                    lProfile.openIdConfigUrl = AppSettings.OpenIdConfigUrl;
                }

                var authData = CheckPoint.Instance.GetAuthenticatedData();

                if (authData.ContainsKey(CheckPoint.AUTH_DATA_OAUTH2_TOKEN))
                {
                    lProfile.authToken = authData[CheckPoint.AUTH_DATA_OAUTH2_TOKEN];
                }

                return(Json(lProfile, JsonRequestBehavior.AllowGet));
            }
        }
示例#6
0
 public bool CreateUser(DB.User user)
 {
     Trace.Write("Start Create User");
     Trace.Write(string.Format("Data:{0}", JsonConvert.SerializeObject(user)));
     if (user == null || user.Id == Guid.Empty)
     {
         return(false);
     }
     try
     {
         using (var db = new DB.PazzoDatabaseEntities())
         {
             var oldData = db.User.Where(c => c.Id == user.Id).FirstOrDefault();
             if (oldData == null)
             {
                 db.User.Add(user);
             }
             db.SaveChanges();
             Trace.Write("End Create User");
             return(true);
         }
     }
     catch (Exception ex)
     {
         log.Error(ex);
         Trace.Write("End Create User");
         return(false);
     }
 }
示例#7
0
 private void add_Click(object sender, EventArgs e)
 {
     if (users.Text == string.Empty || users_name.Text == string.Empty || passward.Text == string.Empty || combodegre.Text == string.Empty)
     {
         MessageBox.Show("يجب جميع الحقول", "Error");
         users.Focus();
     }
     else
     {
         var     DBonWork = new DB.SmartCentralDB(Properties.Settings.Default.ConctToDataBase);
         DB.User saveuser = new DB.User
         {
             ID       = users.Text,
             PassWord = passward.Text,
             Name     = users_name.Text,
             Degre    = combodegre.Text
         };
         DBonWork.Users.InsertOnSubmit(saveuser);
         DBonWork.SubmitChanges();
         users.Clear();
         users_name.Clear();
         passward.Clear();
         users.Focus();
     }
 }
示例#8
0
        public int Save(Models.MUsers model)
        {
            Common.Logger l         = new Common.Logger();
            string        ClassName = "CUsers";

            try
            {
                var query = from a in obj.Users where a.name == model.name select a.name;
                if (query.Count() == 0)
                {
                    DB.User bs = new DB.User();

                    bs.name     = model.name;
                    bs.password = model.password;
                    bs.Approved = "0";
                    bs.eDate    = Convert.ToDateTime(model.eDate);

                    l.Print(ClassName, Common.LogPointer.Info.ToString(), "Model Values id[" + model.id + "] name[" + model.name + "] password[" + model.password + "] eDate[" + model.eDate + "]");
                    obj.Users.InsertOnSubmit(bs);
                    obj.SubmitChanges();
                    l.Print(ClassName, Common.LogPointer.Info.ToString(), "Record Inserted Successfully");
                    return(1);
                }
                else
                {
                    return(2);
                }
            }
            catch (Exception ex)
            {
                l.Print(ClassName, Common.LogPointer.Error.ToString(), ex.ToString());
                return(-1);
            }
        }
示例#9
0
        public override Login_Output GetData(Login_Input input)
        {
            Login_Output output = new Login_Output();

            DB.User user = DB.User.GetByFieldValue("Email", input.Email);

            if (user == null)
            {
                output.Status  = "Email not found";
                output.FocusID = "editEmail_Login";
                return(output);
            }

            if (input.Password != user.Password)
            {
                output.Status  = "Invalid password";
                output.FocusID = "editPassword_Login";
                return(output);
            }

            //if( !(user.Status == DB.UserStatus.ACTIVE || user.Status == DB.UserStatus.VIP || user.Status == DB.UserStatus.ADMIN) )
            if (user.Status == DB.UserStatus.DISABLED)
            {
                output.Status = string.Format("User is disabled, contact me"); // TODO? : <a href="ContactMe.aspx"> contact me </a>
                return(output);
            }

            // everything is OK, sign me in
            if (output.Status == "OK")
            {
                FormsAuthentication.SetAuthCookie(user.Email, input.doRememberMe);
            }

            return(output);
        }
示例#10
0
 public UserContext(DB.User data, bool isAuthorized)
 {
     _idUser       = data.IdUser;
     _data         = data;
     _isAuthorized = isAuthorized;
     _permissions  = new UserPermissions();
 }
示例#11
0
        public Response UserLogin(string email, string password)
        {
            Response response = new Response();

            if (string.IsNullOrEmpty(email))
            {
                response.Msg = "fail, email required";
            }
            else if (string.IsNullOrEmpty(password))
            {
                response.Msg = "fail, password required";
            }
            else
            {
                using (VehiclesSystemEntities db = new VehiclesSystemEntities())
                {
                    DB.User user = (from u in db.Users
                                    where u.Email == email &&
                                    u.Password == password
                                    select u).FirstOrDefault();

                    if (user == null)
                    {
                        response.Msg = "Account doesn't exist";
                    }
                    else
                    {
                        response.Msg    = "success";
                        response.UserId = user.Id;
                    }
                }
            }

            return(response);
        }
示例#12
0
        private bool DatabaseIsUserEnrolled(string user_name)
        {
            // throws InvalidOperation if multiple rows
            DB.User db_user = _db_context.Users
                              .Single(e => e.Name == user_name);

            return(db_user == null);
        }
示例#13
0
 private void DatabaseUserInsert(UserEntry new_user_enroll)
 {
     DB.User db_user = new DB.User();
     db_user.Name         = new_user_enroll.Name;
     db_user.PasswordHash = new_user_enroll.PasswordHash;
     db_user.EnrollTime   = DateTime.UtcNow;
     _db_context.Users.Add(db_user);
     _db_context.SaveChanges();
 }
示例#14
0
        public Response CreateUser(string firstName, string lastName, string email, string password, byte age, string mobileNumber)
        {
            int?     AGE      = age;
            Response response = new Response();

            if (string.IsNullOrEmpty(firstName))
            {
                response.Msg = "fail, first name required";
            }
            else if (string.IsNullOrEmpty(lastName))
            {
                response.Msg = "fail, last name required";
            }
            else if (string.IsNullOrEmpty(email))
            {
                response.Msg = "fail, email required";
            }
            else if (string.IsNullOrEmpty(password))
            {
                response.Msg = "fail, password required";
            }
            else if (!AGE.HasValue)
            {
                response.Msg = "fail, aged required";
            }
            else if (string.IsNullOrEmpty(mobileNumber))
            {
                response.Msg = "fail, mobile number required";
            }
            else
            {
                if (!IsEmailExist(email))
                {
                    using (VehiclesSystemEntities db = new VehiclesSystemEntities())
                    {
                        DB.User user = new DB.User
                        {
                            FirstName    = firstName,
                            LastName     = lastName,
                            Email        = email,
                            Password     = password,
                            Age          = age,
                            MobileNumber = mobileNumber
                        };
                        db.Users.Add(user);
                        db.SaveChanges();
                        response.UserId = user.Id;
                        response.Msg    = "success";
                    }
                }
                else
                {
                    response.Msg = "failed!, Email is exist";
                }
            }
            return(response);
        }
示例#15
0
 public ActionResult ChangeInfo(string id)
 {
     if (string.IsNullOrEmpty(id))
     {
         // Молча вернуться в список
         return(RedirectToAction("Info"));
     }
     DB.DBModel db = new DB.DBModel();
     DB.User    c  = (from item in db.User where item.Name == id select item).FirstOrDefault();
     return(View(c));
 }
示例#16
0
        public ActionResult ChangeInfo(FormCollection collection)
        {
            string ID = collection["Name"];

            DB.DBModel db = new DB.DBModel();
            DB.User    c  = (from item in db.User where item.Name == ID select item).FirstOrDefault();
            c.Name           = collection["Name"];
            c.Login          = collection["Login"];
            c.Password       = collection["Password"];
            c.IDCompany      = int.Parse(collection["IDCompany"]);
            c.StatusContract = collection["StatusContract"];
            db.SaveChanges();
            return(RedirectToAction("Info"));
        }
示例#17
0
        public override PasswordForgot_Output GetData(PasswordForgot_Input input)
        {
            PasswordForgot_Output output = new PasswordForgot_Output();

            DB.User user = DB.User.GetByFieldValue("Email", input.Email);

            if (user == null)
            {
                output.Status = "Email not found";
                return(output);
            }


            if (output.Status == "OK")
            {
                // create token
                Guid token         = Guid.NewGuid();
                int  expireMinutes = int.Parse(ConfigurationManager.AppSettings["PasswordReset.TokenTimeoutMinutes"]);
                HttpContext.Current.Cache.Insert("PASSWORD_RESET_TOKEN_" + token.ToString(), user.Email, null, DateTime.Now.AddMinutes(expireMinutes), System.Web.Caching.Cache.NoSlidingExpiration);

                // send email
                try
                {
                    string emailTemplate = File.ReadAllText(Server.MapPath("~/WebServices/PasswordForgot.EmailTemplate"));

                    //string link = HttpContext.Current.Request.ServerVariables["SERVER_NAME"] + "/PasswordReset.aspx?token="+token.ToString();
                    string link = HttpContext.Current.Request.Url.Host + "/PasswordReset.aspx?token=" + token.ToString();

                    string body = string.Format(emailTemplate, user.Name, link, link, expireMinutes, HttpContext.Current.Request.Url.Host);


                    Tools.Email.Send(new Tools.Email()  //"support", user.Email, "password recovery", body, "Support");
                    {
                        To              = user.Email,
                        From            = "*****@*****.**",
                        Subject         = "[LastMessage.in] Password reset",
                        Body            = body,
                        ConfigKeyPrefix = "Notify",
                    }
                                     );
                }
                catch (Exception ex)
                {
                    output.Status = "Send Email failed: " + ex.Message;
                }
            }

            return(output);
        }
示例#18
0
 public ActionResult CreateUser(FormCollection collection)
 {
     DB.DBModel db = new DB.DBModel();
     DB.User    c  = new DB.User()
     {
         Name           = collection["Name"],
         Login          = collection["Login"],
         Password       = collection["Password"],
         IDCompany      = int.Parse(collection["IDCompany"]),
         StatusContract = collection["StatusContract"],
     };
     db.User.Add(c);
     db.SaveChanges();
     return(RedirectToAction("CreateUser"));
 }
示例#19
0
        public void CreateUserTest()
        {
            DB.User user = new DB.User();
            user.Id   = Guid.NewGuid();
            user.Name = "TH.Lee1";
            UserService userService = new UserService();

            Assert.IsTrue(userService.CreateUser(user));
            user.Id   = Guid.NewGuid();
            user.Name = "TH.Lee2";
            Assert.IsTrue(userService.CreateUser(user));
            user.Id   = Guid.NewGuid();
            user.Name = "TH.Lee3";
            Assert.IsTrue(userService.CreateUser(user));
        }
示例#20
0
        public override Register_Output GetData(Register_Input input)
        {
            Register_Output output = new Register_Output();

            DB.User user = DB.User.GetByFieldValue("Email", input.Email);

            if (user != null)
            {
                output.Status  = "Email already registered";
                output.FocusID = "editEmail_Register";
                return(output);
            }

            if (input.Password != input.PasswordConfirm)
            {
                output.Status  = "Please confirm password";
                output.FocusID = "editPasswordConfirm_Register";
                return(output);
            }

            // mroe validations

            if (output.Status == "OK")
            {
                user = new DB.User()
                {
                    ID       = -1,
                    Status   = DB.UserStatus.ACTIVE,
                    Email    = input.Email,
                    Name     = input.Name,
                    Password = input.Password
                };
                user = user.Save();

                FormsAuthentication.SetAuthCookie(user.Email, input.doRememberMe);


                DB.Log.Add(new DB.Log()
                {
                    UserID = user.ID,
                    Type   = DB.LogType.REGISTER_USER,
                    Text   = user.Email
                }
                           );
            }

            return(output);
        }
        private void InitUserInfo()
        {
            UserService userService = new UserService();

            Assert.IsTrue(userService.DeleteUsers());
            DB.User user = new DB.User();
            user.Id   = Guid.NewGuid();
            user.Name = "TH.Lee1";
            Assert.IsTrue(userService.CreateUser(user));
            user.Id   = Guid.NewGuid();
            user.Name = "TH.Lee2";
            Assert.IsTrue(userService.CreateUser(user));
            user.Id   = Guid.NewGuid();
            user.Name = "TH.Lee3";
            Assert.IsTrue(userService.CreateUser(user));
        }
        public AdminController(IManagerFactoryBase <ICourseManager> _courseFactory, IManagerFactoryBase <IUserManager> _userFactory)
        {
            _CourseManagerfactory = _courseFactory;
            _UserManagerfactory   = _userFactory;
            User user = new DB.User();

            user.Sid      = 1;
            user.CreateDT = DateTime.Parse("2015-01-01");
            user.Role     = "A";
            user.Username = "******";
            user.FullName = "Bruce Lee";
            user.Admins.Add(new Admin {
                Sid = 1, UserSid = 1
            });
            LogUserIn(user);
        }
示例#23
0
        public ActionResult My()
        {
            int?   lOrganizationId = null;
            string lUserName       = this.User.Identity.Name;

            DB.User lCurrentUser = CheckPoint.Instance.GetUser(tdb);

            if (lCurrentUser == null)
            {
                throw new KeyNotFoundException(string.Format("{0} was not found in the Trifolia database", lUserName));
            }

            lOrganizationId = lCurrentUser.OrganizationId;

            return(RedirectToAction("Details", new { id = lOrganizationId.Value }));
        }
示例#24
0
 public bool SaveUser(DB.User user)
 {
     try
     {
         using (var db = new DB.DBEntities())
         {
             var isValidate = CheckUserInfo(user);
             if (!isValidate)
             {
                 return(false);
             }
             if (user == null)
             {
                 return(false);
             }
             if (user.Id == Guid.Empty)
             {
                 user.Id           = Guid.NewGuid();
                 user.CreateBy     = user.UserName;
                 user.CreateDate   = DateTime.Now;
                 user.ModifiedBy   = user.UserName;
                 user.ModifiedDate = DateTime.Now;
                 user.Enable       = true;
             }
             var oldData = db.User.Where(c => c.Id == user.Id).FirstOrDefault();
             if (oldData == null)
             {
                 db.User.Add(user);
             }
             else
             {
                 user.CreateBy     = oldData.CreateBy;
                 user.CreateDate   = oldData.CreateDate;
                 user.ModifiedBy   = oldData.ModifiedBy;
                 user.ModifiedDate = DateTime.Now;
                 user.Enable       = oldData.Enable;
                 db.Entry(oldData).CurrentValues.SetValues(user);
             }
             db.SaveChanges();
             return(true);
         }
     }
     catch (Exception e)
     {
         return(false);
     }
 }
 private void btn_add_add_Click(object sender, RoutedEventArgs e)
 {
     ContentAddUser.Hide();
     if (tb_login.Text != "")
     {
         try
         {
             using (DB.RegistrantCoreContext ef = new DB.RegistrantCoreContext())
             {
                 DB.User user = new DB.User();
                 user.Name     = tb_name.Text;
                 user.Login    = tb_login.Text;
                 user.Password = tb_pass.Text;
                 if (cb_access.SelectedIndex == 0)
                 {
                     user.LevelAccess = "kpp";
                 }
                 else if (cb_access.SelectedIndex == 1)
                 {
                     user.LevelAccess = "reader";
                 }
                 else if (cb_access.SelectedIndex == 2)
                 {
                     user.LevelAccess = "warehouse";
                 }
                 else if (cb_access.SelectedIndex == 3)
                 {
                     user.LevelAccess = "shipment";
                 }
                 else if (cb_access.SelectedIndex == 4)
                 {
                     user.LevelAccess = "admin";
                 }
                 ef.Add(user);
                 ef.SaveChanges();
                 LoadUser();
             }
         }
         catch (Exception ex)
         {
             ((MainWindow)System.Windows.Application.Current.MainWindow).ContentErrorText.ShowAsync();
             ((MainWindow)System.Windows.Application.Current.MainWindow).text_debuger.Text = ex.ToString();
         }
         ContentSave.ShowAsync();
     }
 }
示例#26
0
        protected DB.User VerifyUser()
        {
            var user = _userrepo.GetUser(_useremail);

            if (user == null)
            {
                var u = new DB.User();
                u.Email       = _useremail;
                u.DateCreated = DateTime.Now;
                u.Active      = true;
                _userrepo.AddUser(u);
                _userrepo.Save();

                user = u;
            }

            return(user);
        }
示例#27
0
        private bool TryLogIn(UserEntry user)
        {
            if (_authenticated_users.Count > AuthorizedUsersInitCapacity ||
                _authenticated_users.Find(e => e.Name == user.Name && e.PasswordHash == user.PasswordHash) != null)
            {
                return(false);
            }
            // throws InvalidOperation if multiple rows
            DB.User db_user = DatabaseAuthenticateAndSelectUser(user);

            if (db_user == null)
            {
                return(false);
            }

            _authenticated_users.Add(db_user);
            return(true);
        }
示例#28
0
        public ActionResult SaveProfile(UserProfile aProfile)
        {
            using (DB.IObjectRepository tdb = DBContext.Create())
            {
                DB.User lUser = CheckPoint.Instance.GetUser(tdb);

                lUser.Use(u =>
                {
                    u.FirstName                = aProfile.firstName;
                    u.LastName                 = aProfile.lastName;
                    u.Phone                    = aProfile.phone;
                    u.Email                    = aProfile.email;
                    u.OkayToContact            = aProfile.okayToContact;
                    u.ExternalOrganizationName = aProfile.organization;
                    u.ExternalOrganizationType = aProfile.organizationType;
                });

                tdb.SaveChanges();

                return(ProfileData());
            }
        }
示例#29
0
        private string TokenGenerator(DB.User user)
        {
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(jwtSettings.Secret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new[]
                {
                    new Claim(JwtRegisteredClaimNames.Sub, user.RegistrationNumber),
                    new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                    new Claim("Id", user.Id),
                    new Claim("UserName", user.UserName),
                    new Claim(ClaimTypes.Role, "Operator")
                }),
                Expires            = DateTime.UtcNow.AddHours(2),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };

            var token = tokenHandler.CreateToken(tokenDescriptor);

            return(tokenHandler.WriteToken(token));
        }
示例#30
0
        public ActionResult SaveProfile(UserProfile aProfile)
        {
            using (DB.TemplateDatabaseDataSource tdb = new TemplateDatabaseDataSource())
            {
                DB.User lUser = CheckPoint.Instance.GetUser(tdb);

                lUser.Use(u =>
                {
                    u.FirstName                = aProfile.firstName;
                    u.LastName                 = aProfile.lastName;
                    u.Phone                    = aProfile.phone;
                    u.Email                    = aProfile.email;
                    u.OkayToContact            = aProfile.okayToContact;
                    u.ExternalOrganizationName = aProfile.organization;
                    u.ExternalOrganizationType = aProfile.organizationType;
                    u.ApiKey                   = aProfile.apiKey;
                });

                tdb.SaveChanges();

                return(ProfileData());
            }
        }