How do I assign a role after user clicks a link?
You can use Rules for that. The configuration can be({{}} are placeholders, do not use on the real values):


React on event "Content is viewed"
Condition: Data comparison (Parameter: Data to compare: [node:nid], Data value: {{NID from the node you're using to trigger this role activation}})
Action: Add user role (Parameter: User: [site:current-user], Roles: {{the role you want to add}})