예제 #1
0
        public bool AssignRightsToUser(string username, ArrayList rights)
        {
            bool ret = true;

            try
            {
                User usr = User.LoadByUsername(username);
                foreach (string right in rights)
                {
                    if (!usr.HasRight(right))
                    {
                        usr.AssignRight(right);
                    }
                }
                List <UserRight> tmp = new List <UserRight>(usr.Rights);
                foreach (UserRight right in tmp)
                {
                    if (!rights.Contains(right.Name))
                    {
                        usr.RemoveRight(right.Name);
                    }
                }
                usr.Update();
            }
            catch (Exception e)
            {
                EventController.TriggerEvent(new ErrorOccuredEvent(e));
                Log.Error(e);
                ret = false;
            }
            return(ret);
        }
예제 #2
0
        public List <NameValuePair> GetUserRights(string username)
        {
            List <NameValuePair> ret = new List <NameValuePair>();
            User usr = User.LoadByUsername(username);

            foreach (UserRight ur in UserRight.All)
            {
                ret.Add(new NameValuePair(ur.Name, usr.HasRight(ur.Name).ToString().ToLower()));
            }
            return(ret);
        }
예제 #3
0
 public bool UpdateUserPassword(string username, string newpass)
 {
     try
     {
         User usr = User.LoadByUsername(username);
         usr.SetPassword(newpass, Constants.HTTP_AUTH_REALM);
         usr.Update();
     }
     catch (Exception e)
     {
         EventController.TriggerEvent(new ErrorOccuredEvent(e));
         Log.Error(e);
         return(false);
     }
     return(true);
 }
예제 #4
0
        public static UserRight CreateRight(string name)
        {
            Log.Trace("Creating UserRight " + name);
            Connection conn = ConnectionPoolManager.GetConnection(typeof(UserRight));

            Log.Trace("Checking is UserRight " + name + " already exists");
            List <Org.Reddragonit.Dbpro.Structure.Table> tmp = conn.Select(typeof(UserRight),
                                                                           new SelectParameter[] { new EqualParameter("Name", name) });
            UserRight ret = null;

            if (tmp.Count > 0)
            {
                Log.Trace("UserRight " + name + " already exists in the database");
                ret = (UserRight)tmp[0];
            }
            else
            {
                Log.Trace("UserRight " + name + " does not exists in the database, adding it now");
                ret      = new UserRight();
                ret.Name = name;
                ret      = (UserRight)conn.Save(ret);
                conn.Commit();
                User u = User.LoadByUsername("admin");
                if (u != null)
                {
                    bool found = false;
                    foreach (UserRight ur in u.Rights)
                    {
                        if (ur.Name == ret.Name)
                        {
                            found = true;
                            break;
                        }
                    }
                    if (!found)
                    {
                        List <UserRight> rights = new List <UserRight>(u.Rights);
                        rights.Add(ret);
                        u.Rights = rights.ToArray();
                        u.Update();
                    }
                }
            }
            conn.CloseConnection();
            return(ret);
        }
 public static void PostAuthenticationFailure(HttpRequest request, string username)
 {
     _loginCount++;
     if (_loginCount >= _maxAttempts)
     {
         EventController.TriggerEvent(new UserLoginEvent(username, ((IPEndPoint)request.Client).Address, UserLoginEvent.LoginEventTypes.ATTEMPTS_EXCEEDED));
         User usr = User.LoadByUsername(username);
         if (usr != null)
         {
             usr.Locked = true;
             usr.Update();
         }
         request.ResponseStatus = HttpStatusCodes.Forbidden;
     }
     else
     {
         EventController.TriggerEvent(new UserLoginEvent(username, ((IPEndPoint)request.Client).Address, UserLoginEvent.LoginEventTypes.FAILURE));
     }
 }
        public static void PostAuthentication(HttpRequest request, sHttpAuthUsernamePassword user)
        {
            _loginCount = 0;
            User usr = User.LoadByUsername(user.UserName);

            if (usr.AttachedDomain != null)
            {
                request.Session[Context.SESSION_ID] = usr.AttachedDomain.InternalProfile.Context;
                request.Session[Domain.SESSION_ID]  = usr.AttachedDomain;
            }
            else if (usr.AllowedDomains != null)
            {
                if (usr.AllowedDomains.Length > 0)
                {
                    request.Session[Context.SESSION_ID] = usr.AllowedDomains[0].InternalProfile.Context;
                    request.Session[Domain.SESSION_ID]  = usr.AllowedDomains[0];
                }
            }
            request.Session[User.STORAGE_ID] = usr;
            EventController.TriggerEvent(new UserLoginEvent(user.UserName, ((IPEndPoint)request.Client).Address, UserLoginEvent.LoginEventTypes.SUCCESS));
        }
예제 #7
0
        public string Logout()
        {
            if (Org.Reddragonit.FreeSwitchConfig.DataCore.DB.Users.User.Current != null)
            {
                Log.Trace("Logging out user " + Org.Reddragonit.FreeSwitchConfig.DataCore.DB.Users.User.Current.FirstName);
            }
            else
            {
                EventController.TriggerEvent(new ErrorOccuredEvent("There is no user logged in to be logged out"));
                Log.Error("There is no user logged in to be logged out");
            }
            Request.Session.Abandon();
            string uname = "ABCDEFGH";

            while (User.LoadByUsername(uname) != null)
            {
                for (int x = 0; x < uname.Length; x++)
                {
                    uname = (x == 0 ? "" : uname.Substring(0, x)) + _USERNAME_CHARS[_rand.RandomRange(0, _USERNAME_CHARS.Length - 1)].ToString() + (x + 1 == uname.Length ? "" : uname.Substring(x + 1));
                }
            }
            return((Request.IsSSL ? "https://" : "http://") + uname + "@" + Request.URL.Host + ":" + Request.URL.Port.ToString() + "/");
        }