Ejemplo n.º 1
0
        /// <summary>
        /// Sets the authentication of this user
        /// </summary>
        /// <param name="auth">Auth.</param>
        /// <param name="by">By.</param>
        public static void SetAuthentication(this BasePlayer player, string auth, string by)
        {
            var ctx = new HookContext()
            {
                Player     = (Terraria.Player)player,
                Connection = player.Connection.Socket
            };
            var changing = new TDSMHookArgs.PlayerAuthenticationChanging()
            {
                AuthenticatedAs = auth,
                AuthenticatedBy = by
            };

            TDSMHookPoints.PlayerAuthenticationChanging.Invoke(ref ctx, ref changing);
            if (ctx.Result != HookResult.DEFAULT)
            {
                return;
            }

            player.SetAuthenticatedAs(auth);
            player.SetAuthenticatedBy(by);

            ctx = new HookContext()
            {
                Player     = (Terraria.Player)player,
                Connection = player.Connection.Socket
            };
            var changed = new TDSMHookArgs.PlayerAuthenticationChanged()
            {
                AuthenticatedAs = auth,
                AuthenticatedBy = by
            };

            TDSMHookPoints.PlayerAuthenticationChanged.Invoke(ref ctx, ref changed);
        }
Ejemplo n.º 2
0
        [Hook(HookOrder.LATE)] //This is required so this can be called last, in order for us to know if it's been cancelled or not
        void OnPlayerAuthenticated(ref HookContext ctx, ref TDSMHookArgs.PlayerAuthenticationChanged args)
        {
            if (ctx.Client.State >= 4 && CharacterManager.Mode == CharacterMode.AUTH)
            {
#if ENTITY_FRAMEWORK_7
                using (var dbCtx = new TContext())
#elif DAPPER
                using (var dbCtx = DatabaseFactory.CreateConnection())
#endif
                {
                    using (var txn = dbCtx.BeginTransaction())
                    {
                        CharacterManager.LoadForAuthenticated(dbCtx, txn, ctx.Player, !Config.SSC_AllowGuestInfo);
                        txn.Commit();
                    }
                }

                if (Config.SSC_AllowGuestInfo)
                {
                    ctx.Player.SetSSCReadyForSave(true); //Since we aren't issuing out data, and accepting it, we can save it.
                }
            }
        }