The liberal reading of the commerce clause allowed this. Before this all congress could do is ban sales across state lines, however now congress calls all commerce interstate commerce and can regulate anything.
Congress has no power to do this, per the 10th Amendment (reserving power to the States).
When Prohibition was enacted, it had to be adopted as a Constitutional Amendment; ditto with Repeal.
Now MJ is supposed to be treated as somehow in the purview of Congress?