Exemplo n.º 1
0
def onChangepass(cn, args):
	'''@description Link name to server account, and reserve name.
	   @usage
	   @public'''
	args = args.split(' ')
	if len(args) != 2:
		raise UsageError()
	if not isLoggedIn(cn):
		raise StateError('You must be logged in to change your password')
	try:
		dbmanager.query(User).filter(User.id==loggedInAs(cn).id).filter(User.password==args[0]).one()
	except NoResultFound:
		raise StateError('Incorrect password.')
	except MultipleResultsFound:
		pass
	else:
		dbmanager.query(User).filter(User.id==loggedInAs(cn).id).update({ 'password': args[1] })
		session.commit()
		return
Exemplo n.º 2
0
def onRegisterCommand(cn, args):
	'''@description Register account with server
	   @usage email password
	   @public'''
	args = args.split(' ')
	if len(args) != 2:
		raise UsageError()
	try:
		dbmanager.query(User).filter(User.email==args[0]).one()
	except NoResultFound:
		if not isValidEmail(args[0]):
			raise ArgumentValueError('Invalid email address')
		user = User(args[0], args[1])
		session.add(user)
		session.commit()
		sauerbomber.playerMessage(cn, info('Account created'))
		return
	except MultipleResultsFound:
		pass
	raise StateError('An account with that email already exists')
Exemplo n.º 3
0
def onLinkName(cn, args):
	'''@description Link name to server account, and reserve name.
	   @usage
	   @public'''
	if args != '':
		raise UsageError()
	if not isLoggedIn(cn):
		raise StateError('You must be logged in to link a name to your account')
	if sauerbomber.playerName(cn) in blocked_names:
		raise StateError('You can not reserve this name')
	try:
		dbmanager.query(NickAccount).filter(NickAccount.nick==sauerbomber.playerName(cn)).one()
	except NoResultFound:
		user = loggedInAs(cn)
		nickacct = NickAccount(sauerbomber.playerName(cn), user.id)
		session.add(nickacct)
		session.commit()
		sauerbomber.playerMessage(cn, info('Your name is now linked to your account.'))
		sauerbomber.playerMessage(cn, info('You may now login with /setmaster password'))
		return
	except MultipleResultsFound:
		pass
	raise StateError('Your name is already linked to an account')
Exemplo n.º 4
0
def onSetMaster(cn, givenhash):
	p = player(cn)
	adminhash = sauerbomber.hashPassword(cn, sauerbomber.adminPassword())
	try:
		na = dbmanager.query(NickAccount).filter(NickAccount.nick==p.name()).one()
	except NoResultFound:
		if givenhash != adminhash:
			p.message(error('Your name is not assigned to any accounts'))
	except MultipleResultsFound:
		p.message(error('Multiple names linked to this account.  Contact the system administrator.'))
	else:
		nickhash = sauerbomber.hashPassword(cn, na.user.password)
		if givenhash == nickhash:
			login(cn, na.user)
		else:
			if givenhash != adminhash:
				p.message(error('Invalid password'))
Exemplo n.º 5
0
def getCurrentBanByNick(nick):
	return dbmanager.query(BanNick).filter(BanNick.nick==nick).one()
Exemplo n.º 6
0
def getCurrentBanByIp(ipaddress):
	return dbmanager.query(Ban).filter(Ban.ip==ipaddress).filter('expiration>'+str(time.time())).one()
Exemplo n.º 7
0
def userAuth(email, password):
	try:
		user = dbmanager.query(User).filter(User.email==email).filter(User.password==password).one()
	except (NoResultFound, MultipleResultsFound):
		return False
	return user
Exemplo n.º 8
0
def nickReserver(nick):
	return dbmanager.query(NickAccount).filter(NickAccount.nick==nick).one()
Exemplo n.º 9
0
def isUserAdmin(user_id):
	try:
		priv = dbmanager.query(UserPrivilege).filter(UserPrivilege.user_id==user_id).filter(UserPrivilege.privilege==ADMIN).one()
		return True
	except NoResultFound:
		return False