#simple rotation code
execute at @s as @e[tag=portal.temp] if score @s portal.sid = @p portal.sid if entity @p[y_rotation=315..44] at @s run teleport @s ~ ~ ~ 180 0
execute at @s as @e[tag=portal.temp] if score @s portal.sid = @p portal.sid if entity @p[y_rotation=45..134] at @s run teleport @s ~ ~ ~ 270 0
execute at @s as @e[tag=portal.temp] if score @s portal.sid = @p portal.sid if entity @p[y_rotation=135..254] at @s run teleport @s ~ ~ ~ 0 0
execute at @s as @e[tag=portal.temp] if score @s portal.sid = @p portal.sid if entity @p[y_rotation=255..314] at @s run teleport @s ~ ~ ~ 90 0

#leave portal with rotation
execute as @e[tag=teleport.portal] at @s as @a[tag=teleport2] run tp @s ~ ~ ~ ~ ~