コード例 #1
0
        private UserBE SetContextAndAuthenticate(DreamMessage request, uint serviceid, bool autoCreateExternalUser, bool allowAnon, bool touchUser, out bool altPassword)
        {
            UserBE user = AuthBL.Authenticate(DreamContext.Current, request, serviceid, autoCreateExternalUser, allowAnon, out altPassword);

            // check if we should touch the user
            bool update = false;

            if (touchUser)
            {
                update = true;
            }
            else if (user.UserActive)
            {
                double?updateTimespan = DekiContext.Current.Instance.StatsUpdateUserOnAccess;
                if (updateTimespan.HasValue && (user.Touched.AddSeconds(updateTimespan.Value) <= DateTime.UtcNow))
                {
                    update = true;
                }
            }

            // update user's last logged time column
            if (update)
            {
                user = UserBL.UpdateUserTimestamp(user);
            }
            DekiContext.Current.User = user;

            // check that a user token is set (it might not be set if a user logs-in directly using HTTP authentication)
            if (!UserBL.IsAnonymous(user) && (DekiContext.Current.AuthToken == null))
            {
                DekiContext.Current.AuthToken = AuthBL.CreateAuthTokenForUser(user);
            }
            BanningBL.PerformBanCheckForCurrentUser();
            return(user);
        }
コード例 #2
0
        public Yield GetBan(DreamContext context, DreamMessage request, Result <DreamMessage> response)
        {
            PermissionsBL.CheckUserAllowed(DekiContext.Current.User, Permissions.ADMIN);
            BanBE ban = GetBanFromRequest(context, context.GetParam <uint>("banid"));

            response.Return(DreamMessage.Ok(BanningBL.GetBanXml(ban)));
            yield break;
        }
コード例 #3
0
        public Yield PostBans(DreamContext context, DreamMessage request, Result <DreamMessage> response)
        {
            PermissionsBL.CheckUserAllowed(DekiContext.Current.User, Permissions.ADMIN);
            BanBE ban = BanningBL.SaveBan(request.ToDocument());

            DekiContext.Current.Instance.EventSink.BanCreated(DekiContext.Current.Now, ban);
            response.Return(DreamMessage.Ok(BanningBL.GetBanXml(ban)));
            yield break;
        }
コード例 #4
0
        private BanBE GetBanFromRequest(DreamContext context, uint banid)
        {
            BanBE ban = BanningBL.GetById(banid);

            if (ban == null)
            {
                throw new BanIdNotFoundException(banid);
            }
            return(ban);
        }
コード例 #5
0
        public Yield DeleteBan(DreamContext context, DreamMessage request, Result <DreamMessage> response)
        {
            PermissionsBL.CheckUserAllowed(DekiContext.Current.User, Permissions.ADMIN);
            BanBE ban = GetBanFromRequest(context, context.GetParam <uint>("banid"));

            BanningBL.DeleteBan(ban);
            DekiContext.Current.Instance.EventSink.BanRemoved(DekiContext.Current.Now, ban);
            response.Return(DreamMessage.Ok());
            yield break;
        }
コード例 #6
0
 public Yield GetBans(DreamContext context, DreamMessage request, Result <DreamMessage> response)
 {
     PermissionsBL.CheckUserAllowed(DekiContext.Current.User, Permissions.ADMIN);
     response.Return(DreamMessage.Ok(BanningBL.RetrieveBans()));
     yield break;
 }