The error ‘User does not have permission to RESTORE database xx’ occurs when you try to restore a database from backup and you do not have sufficient permissions to perform this action. Even if your user have db_owner permissions, you will not be able to restore.
As per the documentation, if the database you are trying to restore does not exists already, your user must have sysadmin or dbcreator role. These roles are necessary to create a new database.
If the database being restored does not exist, the user must have CREATE DATABASE permissions to be able to execute RESTORE. If the database exists, RESTORE permissions default to members of the sysadmin and dbcreator fixed server roles and the owner (dbo) of the database (for the FROM DATABASE_SNAPSHOT option, the database always exists).
RESTORE permissions are given to roles in which membership information is always readily available to the server. Because fixed database role membership can be checked only when the database is accessible and undamaged, which is not always the case when RESTORE is executed, members of the db_owner fixed database role do not have RESTORE permissions.