Can the username ever change? If not, you could use it as the primary key. It would be a natural key, and as such, in my opinion, better than a surrogate key, such as you are currently using.
If the username could ever change, then it is not suitable for use as a primary key.
Since you can't know all the scenarios which could arise in the future, i suspect you can't rule out the possibility that the username might need to change. Therefore, the surrogate key is the future-proof option.
It's perfectly fine to have a unique constraint on the username even though it's not the primary key. You very likely also want a not null constraint on it.