add permalink validate
refactor abstract permalink model