func (r *Server) HasPermission(username, project, permission string) bool {
	r.permissionsLock.Lock()
	defer r.permissionsLock.Unlock()

	// Check whether the permissions are cached
	_, cached := r.permissions[username]

	if !cached {
		r.syncPermissions(username)
	}

	r.resourcesLock.Lock()
	permissions := r.permissions[username][r.resources[project]]
	r.resourcesLock.Unlock()

	return shared.StringInSlice(permission, permissions)
}
func (r *Server) HasPermission(username, project, permission string) bool {
	r.permissionsLock.Lock()
	defer r.permissionsLock.Unlock()

	
	_, cached := r.permissions[username]

	if !cached {
		r.syncPermissions(username)
	}

	r.resourcesLock.Lock()
	permissions := r.permissions[username][r.resources[project]]
	r.resourcesLock.Unlock()

	return shared.StringInSlice(permission, permissions)
}
func ( r * Server ) HasPermission ( username , project , permission string ) bool { r . permissionsLock . Lock ( ) defer r . permissionsLock . Unlock ( ) // Check whether the permissions are cached _ , cached := r . permissions [ username ] if ! cached { r . syncPermissions ( username ) } r . resourcesLock . Lock ( ) permissions := r . permissions [ username ] [ r . resources [ project ] ] r . resourcesLock . Unlock ( ) return shared . StringInSlice ( permission , permissions ) }
// HasPermission returns whether or not the user has the permission to perform a certain task.
HasPermission returns whether or not the user has the permission to perform a certain task .