public static bool AuthenticateMe(string cookie)
        {
            if (!string.IsNullOrEmpty(cookie))
            {
                int      tenant;
                Guid     userid;
                int      indexTenant;
                DateTime expire;
                int      indexUser;
                int      loginEventId;

                if (cookie.Equals("Bearer", StringComparison.InvariantCulture))
                {
                    var ipFrom  = string.Empty;
                    var address = string.Empty;
                    if (HttpContext.Current != null)
                    {
                        var request = HttpContext.Current.Request;
                        ipFrom  = "from " + (request.Headers["X-Forwarded-For"] ?? request.UserHostAddress);
                        address = "for " + request.GetUrlRewriter();
                    }
                    log.InfoFormat("Empty Bearer cookie: {0} {1}", ipFrom, address);
                }
                else if (CookieStorage.DecryptCookie(cookie, out tenant, out userid, out indexTenant, out expire, out indexUser, out loginEventId))
                {
                    if (tenant != CoreContext.TenantManager.GetCurrentTenant().TenantId)
                    {
                        return(false);
                    }

                    var settingsTenant = TenantCookieSettings.GetForTenant(tenant);
                    if (indexTenant != settingsTenant.Index)
                    {
                        return(false);
                    }

                    if (expire != DateTime.MaxValue && expire < DateTime.UtcNow)
                    {
                        return(false);
                    }

                    try
                    {
                        var settingsUser = TenantCookieSettings.GetForUser(userid);
                        if (indexUser != settingsUser.Index)
                        {
                            return(false);
                        }

                        var settingLoginEvents = DbLoginEventsManager.GetLoginEventIds(tenant, userid);
                        if (loginEventId != 0 && !settingLoginEvents.Contains(loginEventId))
                        {
                            return(false);
                        }

                        CurrentAccount = new UserAccount(new UserInfo {
                            ID = userid
                        }, tenant);
                        return(true);
                    }
                    catch (InvalidCredentialException ice)
                    {
                        log.DebugFormat("{0}: cookie {1}, tenant {2}, userid {3}",
                                        ice.Message, cookie, tenant, userid);
                    }
                    catch (SecurityException se)
                    {
                        log.DebugFormat("{0}: cookie {1}, tenant {2}, userid {3}",
                                        se.Message, cookie, tenant, userid);
                    }
                    catch (Exception err)
                    {
                        log.ErrorFormat("Authenticate error: cookie {0}, tenant {1}, userid {2}: {3}",
                                        cookie, tenant, userid, err);
                    }
                }
                else
                {
                    var ipFrom  = string.Empty;
                    var address = string.Empty;
                    if (HttpContext.Current != null)
                    {
                        var request = HttpContext.Current.Request;
                        address = "for " + request.GetUrlRewriter();
                        ipFrom  = "from " + (request.Headers["X-Forwarded-For"] ?? request.UserHostAddress);
                    }
                    log.WarnFormat("Can not decrypt cookie: {0} {1} {2}", cookie, ipFrom, address);
                }
            }
            return(false);
        }