The Supreme Court has ruled, in Gonzales v. Raich, 545 U.S. 1, that Congress is empowered to pass the Controlled Substances Act: whether or not you agree with the ruling, that is what the current law is. Citing Wickard v. Filburn, 317 U.S. 111 and Perez v. US, 402 U.S. 146, the court held that
If Congress decides that the “‘total incidence’” of a practice poses a
threat to a national market, it may regulate the entire class
because Congress may conclude that
failure to regulate that class of activity would undercut the
regulation of the interstate market in that commodity
Then comparing Raich (a medical marijuana case) and Wickard, the court held that
In both cases, the regulation is squarely within Congress’ commerce
power because production of the commodity meant for home consumption,
be it wheat or marijuana, has a substantial effect on supply and
demand in the national market for that commodity.
and
the Court has no difficulty concluding that Congress had a rational
basis for believing that failure to regulate the intrastate
manufacture and possession of marijuana would leave a gaping hole in
the CSA
While there are various differences between Wickard and Raich, the court gets to decide which similarities are most important and which differences should be set aside. The disagreement is not trivial: O'connor, Rehnquist and Thomas dissented, finding that the Commerce clause is there to
protect historic spheres of state sovereignty from excessive federal
encroachment and thereby to maintain the distribution of power
fundamental to our federalist system of government
But it was a minority view that the states should have to power to set in-state rules for commerce.