abstract auth