Esempio n. 1
0
 public void SaveUser(User user)
 {
     if (user == null) throw new ArgumentNullException("user");
     lock (syncRoot)
     {
         var bareJid = GetBareJid(user.Jid);
         ExecuteNonQuery(new SqlInsert("jabber_user", true)
             .InColumnValue("jid", bareJid)
             .InColumnValue("pwd", user.Password)
             .InColumnValue("admin", user.IsAdmin));
         Users[bareJid] = user;
     }
 }
Esempio n. 2
0
		private IQ SetRegister(XmppStream stream, IQ iq, XmppHandlerContext context)
		{
			var register = (Register)iq.Query;
			iq.Type = IqType.result;

			if (register.RemoveAccount)
			{
				if (!stream.Authenticated || !iq.From.HasUser) context.Sender.SendToAndClose(stream, XmppStreamError.NotAuthorized);

				context.UserManager.RemoveUser(iq.From);
				foreach (var s in context.SessionManager.GetBareJidSessions(iq.From))
				{
					if (s.Stream.Id == stream.Id) continue;
					context.Sender.SendToAndClose(s.Stream, XmppStreamError.Conflict);
				}
				//TODO: remove roster subscriptions
				register.RemoveAllChildNodes();
				iq.SwitchDirection();
				return iq;
			}

			if (string.IsNullOrEmpty(register.Username) ||
				string.IsNullOrEmpty(register.Password) ||
				Stringprep.NamePrep(register.Username) != register.Username)
			{
				var error = XmppStanzaError.ToNotAcceptable(iq);
				if (string.IsNullOrEmpty(register.Username)) error.Error.Message = "Empty required field Username.";
				else if (string.IsNullOrEmpty(register.Password)) error.Error.Message = "Empty required field Password.";
				else if (Stringprep.NamePrep(register.Username) != register.Username) error.Error.Message = "Invalid character.";
				return error;
			}

			var userJid = new Jid(register.Username, stream.Domain, null);
			if (context.UserManager.IsUserExists(userJid))
			{
				return XmppStanzaError.ToConflict(iq);
			}

			var user = new User(userJid, register.Password);
			context.UserManager.SaveUser(user);

			register.RemoveAllChildNodes();
			if (stream.Authenticated) iq.SwitchDirection();
			else iq.To = null;
			iq.From = null;
			return iq;
		}
Esempio n. 3
0
        public void UserTest()
        {
            var jid = new Jid("jid1", "s", "R1");
            var user = new User(jid, "1", true);

            store.SaveUser(user);
            var u = store.GetUser(jid);
            Assert.IsNotNull(u);
            Assert.AreEqual(user.Password, u.Password);
            Assert.AreEqual(user.IsAdmin, u.IsAdmin);
            Assert.AreEqual(user.Jid.Bare, u.Jid.Bare);

            u = store.GetUser(new Jid("jid2", "s", "R1"));
            Assert.IsNull(u);

            CollectionAssert.IsEmpty(store.GetUsers("s2"));
            foreach (var us in store.GetUsers("s"))
            {
                store.RemoveUser(us.Jid);
            }
            CollectionAssert.IsEmpty(store.GetUsers("s"));
        }
Esempio n. 4
0
		public void SaveUser(User user)
		{
			UserStore.SaveUser(user);
		}
Esempio n. 5
0
		public void SaveUser(User user)
		{
			throw new JabberException(ErrorCode.Forbidden);
		}