docs: def set_user_session(user):
      """
      Set user session
      :param user: user object chould be model instance or dict
      :return:
      """
      from uliweb import settings, request
  
      user_fieldname = settings.get_var('AUTH/GET_AUTH_USER_FIELDNAME', 'id')
      share_session = settings.get_var('AUTH/AUTH_SHARE_USER_SESSION', False)
      if isinstance(user, dict):
          user_id = user[user_fieldname]
      else:
          user_id = getattr(user, user_fieldname)
  
      if share_session:
          cache = functions.get_cache()
          key = get_user_session_key(user_id)
          session_id = cache.get(key, None)
          log.debug('Auth: user session user_id={}, session_id={}, key={}'.format(user_id, session_id, key))
          if not session_id:
              request.session.save()
              log.debug('Auth: set user session mapping userid={}, '
                        'session_id={}, expiry time={}'.format(user_id,
                                                               request.session.key,
                                                               request.session.expiry_time))
              cache.set(key, request.session.key, expire=request.session.expiry_time)
          elif session_id != request.session.key:
              log.debug('Auth: load oldkey={}, key={}'.format(request.session.key, session_id))
              request.session.delete()
              request.session.load(session_id)
      if isinstance(user, dict):
          request.session[_get_auth_key()] = user
      else:
          request.session[_get_auth_key()] = user_id
      request.user = user