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); }
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; }
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; }
private BanBE GetBanFromRequest(DreamContext context, uint banid) { BanBE ban = BanningBL.GetById(banid); if (ban == null) { throw new BanIdNotFoundException(banid); } return(ban); }
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; }
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; }