Move username change decision into user model