mirror of
https://github.com/documize/community.git
synced 2025-07-18 20:59:43 +02:00
changed indexer coupling
This commit is contained in:
parent
562872a4a8
commit
ecc94f31c9
12 changed files with 52 additions and 45 deletions
|
@ -92,7 +92,7 @@ func (h *Handler) Login(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(ctx, dom)
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(dom)
|
||||
if err != nil {
|
||||
response.WriteUnauthorizedError(w)
|
||||
return
|
||||
|
@ -136,7 +136,7 @@ func (h *Handler) ValidateToken(w http.ResponseWriter, r *http.Request) {
|
|||
// depending upon the domain in question.
|
||||
if len(rc.OrgID) == 0 {
|
||||
dom := organization.GetRequestSubdomain(r)
|
||||
org, err = h.Store.Organization.GetOrganizationByDomain(rc, dom)
|
||||
org, err = h.Store.Organization.GetOrganizationByDomain(dom)
|
||||
} else {
|
||||
org, err = h.Store.Organization.GetOrganization(rc, rc.OrgID)
|
||||
}
|
||||
|
|
|
@ -161,7 +161,7 @@ func (h *Handler) Authenticate(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(ctx, a.Domain)
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(a.Domain)
|
||||
if err != nil {
|
||||
response.WriteUnauthorizedError(w)
|
||||
return
|
||||
|
|
|
@ -61,7 +61,7 @@ func (h *Handler) Get(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
if CanViewDocumentInFolder(ctx, *h.Store, document.LabelID) {
|
||||
if !CanViewDocumentInFolder(ctx, *h.Store, document.LabelID) {
|
||||
response.WriteForbiddenError(w)
|
||||
return
|
||||
}
|
||||
|
@ -72,12 +72,16 @@ func (h *Handler) Get(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
h.Store.Activity.RecordUserActivity(ctx, activity.UserActivity{
|
||||
err = h.Store.Activity.RecordUserActivity(ctx, activity.UserActivity{
|
||||
LabelID: document.LabelID,
|
||||
SourceID: document.RefID,
|
||||
SourceType: activity.SourceTypeDocument,
|
||||
ActivityType: activity.TypeRead})
|
||||
|
||||
if err != nil {
|
||||
h.Runtime.Log.Error("record user activity", err)
|
||||
}
|
||||
|
||||
h.Store.Audit.Record(ctx, audit.EventTypeDocumentView)
|
||||
|
||||
ctx.Transaction.Commit()
|
||||
|
@ -143,6 +147,7 @@ func (h *Handler) BySpace(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
if !space.CanViewSpace(ctx, *h.Store, folderID) {
|
||||
h.Runtime.Log.Info("no permission to view space documents")
|
||||
response.WriteForbiddenError(w)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ func (h *Handler) GetLinkCandidates(w http.ResponseWriter, r *http.Request) {
|
|||
}
|
||||
|
||||
// permission check
|
||||
if document.CanViewDocument(ctx, *h.Store, documentID) {
|
||||
if !document.CanViewDocument(ctx, *h.Store, documentID) {
|
||||
response.WriteForbiddenError(w)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -37,12 +37,10 @@ type Handler struct {
|
|||
|
||||
// Meta provides org meta data based upon request domain (e.g. acme.documize.com).
|
||||
func (h *Handler) Meta(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := domain.GetRequestContext(r)
|
||||
|
||||
data := org.SiteMeta{}
|
||||
data.URL = organization.GetSubdomainFromHost(r)
|
||||
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(ctx, data.URL)
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(data.URL)
|
||||
if err != nil {
|
||||
response.WriteForbiddenError(w)
|
||||
return
|
||||
|
@ -72,7 +70,7 @@ func (h *Handler) RobotsTxt(w http.ResponseWriter, r *http.Request) {
|
|||
ctx := domain.GetRequestContext(r)
|
||||
|
||||
dom := organization.GetSubdomainFromHost(r)
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(ctx, dom)
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(dom)
|
||||
|
||||
// default is to deny
|
||||
robots :=
|
||||
|
@ -116,7 +114,7 @@ func (h *Handler) Sitemap(w http.ResponseWriter, r *http.Request) {
|
|||
ctx := domain.GetRequestContext(r)
|
||||
|
||||
dom := organization.GetSubdomainFromHost(r)
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(ctx, dom)
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(dom)
|
||||
|
||||
if err != nil {
|
||||
h.Runtime.Log.Error(fmt.Sprintf("%s failed to get Organization for domain %s", method, dom), err)
|
||||
|
|
|
@ -77,7 +77,8 @@ func (s Scope) GetOrganization(ctx domain.RequestContext, id string) (org org.Or
|
|||
}
|
||||
|
||||
// GetOrganizationByDomain returns the organization matching a given URL subdomain.
|
||||
func (s Scope) GetOrganizationByDomain(ctx domain.RequestContext, subdomain string) (org org.Organization, err error) {
|
||||
// No context is required because user might no be authenticated yet.
|
||||
func (s Scope) GetOrganizationByDomain(subdomain string) (org org.Organization, err error) {
|
||||
err = nil
|
||||
subdomain = strings.ToLower(subdomain)
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import (
|
|||
"github.com/documize/community/domain"
|
||||
"github.com/documize/community/domain/document"
|
||||
"github.com/documize/community/domain/link"
|
||||
indexer "github.com/documize/community/domain/search"
|
||||
"github.com/documize/community/domain/section/provider"
|
||||
"github.com/documize/community/model/activity"
|
||||
"github.com/documize/community/model/audit"
|
||||
|
@ -39,6 +40,7 @@ import (
|
|||
type Handler struct {
|
||||
Runtime *env.Runtime
|
||||
Store *domain.Store
|
||||
Indexer indexer.Indexer
|
||||
}
|
||||
|
||||
// Add inserts new section into document.
|
||||
|
@ -140,7 +142,7 @@ func (h *Handler) Add(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
np, _ := h.Store.Page.Get(ctx, pageID)
|
||||
|
||||
h.Store.Indexer.Add(ctx, np, pageID)
|
||||
h.Indexer.Add(ctx, np, pageID)
|
||||
|
||||
response.WriteJSON(w, np)
|
||||
}
|
||||
|
@ -326,7 +328,7 @@ func (h *Handler) Delete(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
h.Store.Audit.Record(ctx, audit.EventTypeSectionDelete)
|
||||
|
||||
h.Store.Indexer.Delete(ctx, documentID, pageID)
|
||||
h.Indexer.Delete(ctx, documentID, pageID)
|
||||
|
||||
h.Store.Link.DeleteSourcePageLinks(ctx, pageID)
|
||||
|
||||
|
@ -405,7 +407,7 @@ func (h *Handler) DeletePages(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
h.Store.Indexer.Delete(ctx, documentID, page.PageID)
|
||||
h.Indexer.Delete(ctx, documentID, page.PageID)
|
||||
|
||||
h.Store.Link.DeleteSourcePageLinks(ctx, page.PageID)
|
||||
|
||||
|
@ -567,7 +569,7 @@ func (h *Handler) Update(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
ctx.Transaction.Commit()
|
||||
|
||||
h.Store.Indexer.Update(ctx, model.Page)
|
||||
h.Indexer.Update(ctx, model.Page)
|
||||
|
||||
updatedPage, err := h.Store.Page.Get(ctx, pageID)
|
||||
|
||||
|
@ -623,7 +625,7 @@ func (h *Handler) ChangePageSequence(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
h.Store.Indexer.UpdateSequence(ctx, documentID, p.PageID, p.Sequence)
|
||||
h.Indexer.UpdateSequence(ctx, documentID, p.PageID, p.Sequence)
|
||||
}
|
||||
|
||||
h.Store.Audit.Record(ctx, audit.EventTypeSectionResequence)
|
||||
|
@ -682,7 +684,7 @@ func (h *Handler) ChangePageLevel(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
h.Store.Indexer.UpdateLevel(ctx, documentID, p.PageID, p.Level)
|
||||
h.Indexer.UpdateLevel(ctx, documentID, p.PageID, p.Level)
|
||||
}
|
||||
|
||||
h.Store.Audit.Record(ctx, audit.EventTypeSectionResequence)
|
||||
|
|
|
@ -554,7 +554,7 @@ func (h *Handler) AcceptInvitation(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(ctx, ctx.Subdomain)
|
||||
org, err := h.Store.Organization.GetOrganizationByDomain(ctx.Subdomain)
|
||||
if err != nil {
|
||||
response.WriteServerError(w, method, err)
|
||||
return
|
||||
|
|
|
@ -30,21 +30,20 @@ import (
|
|||
|
||||
// Store provides access to data store (database)
|
||||
type Store struct {
|
||||
Account AccountStorer
|
||||
Activity ActivityStorer
|
||||
Attachment AttachmentStorer
|
||||
Audit AuditStorer
|
||||
Block BlockStorer
|
||||
Document DocumentStorer
|
||||
Link LinkStorer
|
||||
Organization OrganizationStorer
|
||||
Page PageStorer
|
||||
Pin PinStorer
|
||||
Search SearchStorer
|
||||
Setting SettingStorer
|
||||
Space SpaceStorer
|
||||
User UserStorer
|
||||
Account AccountStorer
|
||||
Organization OrganizationStorer
|
||||
Pin PinStorer
|
||||
Audit AuditStorer
|
||||
Document DocumentStorer
|
||||
Setting SettingStorer
|
||||
Attachment AttachmentStorer
|
||||
Link LinkStorer
|
||||
Page PageStorer
|
||||
Activity ActivityStorer
|
||||
Search SearchStorer
|
||||
Indexer Indexer
|
||||
Block BlockStorer
|
||||
}
|
||||
|
||||
// SpaceStorer defines required methods for space management
|
||||
|
@ -100,7 +99,7 @@ type AccountStorer interface {
|
|||
type OrganizationStorer interface {
|
||||
AddOrganization(ctx RequestContext, org org.Organization) error
|
||||
GetOrganization(ctx RequestContext, id string) (org org.Organization, err error)
|
||||
GetOrganizationByDomain(ctx RequestContext, subdomain string) (org org.Organization, err error)
|
||||
GetOrganizationByDomain(subdomain string) (org org.Organization, err error)
|
||||
UpdateOrganization(ctx RequestContext, org org.Organization) (err error)
|
||||
DeleteOrganization(ctx RequestContext, orgID string) (rows int64, err error)
|
||||
RemoveOrganization(ctx RequestContext, orgID string) (err error)
|
||||
|
|
|
@ -16,6 +16,7 @@ import (
|
|||
"github.com/documize/community/core/env"
|
||||
"github.com/documize/community/domain"
|
||||
account "github.com/documize/community/domain/account/mysql"
|
||||
activity "github.com/documize/community/domain/activity/mysql"
|
||||
attachment "github.com/documize/community/domain/attachment/mysql"
|
||||
audit "github.com/documize/community/domain/audit/mysql"
|
||||
block "github.com/documize/community/domain/block/mysql"
|
||||
|
@ -32,19 +33,20 @@ import (
|
|||
|
||||
// AttachStore selects database persistence layer
|
||||
func AttachStore(r *env.Runtime, s *domain.Store) {
|
||||
s.Space = space.Scope{Runtime: r}
|
||||
s.Account = account.Scope{Runtime: r}
|
||||
s.Organization = org.Scope{Runtime: r}
|
||||
s.User = user.Scope{Runtime: r}
|
||||
s.Pin = pin.Scope{Runtime: r}
|
||||
s.Audit = audit.Scope{Runtime: r}
|
||||
s.Document = doc.Scope{Runtime: r}
|
||||
s.Setting = setting.Scope{Runtime: r}
|
||||
s.Activity = activity.Scope{Runtime: r}
|
||||
s.Attachment = attachment.Scope{Runtime: r}
|
||||
s.Link = link.Scope{Runtime: r}
|
||||
s.Page = page.Scope{Runtime: r}
|
||||
s.Search = search.Scope{Runtime: r}
|
||||
s.Audit = audit.Scope{Runtime: r}
|
||||
s.Block = block.Scope{Runtime: r}
|
||||
s.Document = doc.Scope{Runtime: r}
|
||||
s.Link = link.Scope{Runtime: r}
|
||||
s.Organization = org.Scope{Runtime: r}
|
||||
s.Page = page.Scope{Runtime: r}
|
||||
s.Pin = pin.Scope{Runtime: r}
|
||||
s.Search = search.Scope{Runtime: r}
|
||||
s.Setting = setting.Scope{Runtime: r}
|
||||
s.Space = space.Scope{Runtime: r}
|
||||
s.User = user.Scope{Runtime: r}
|
||||
}
|
||||
|
||||
// https://github.com/golang-sql/sqlexp/blob/c2488a8be21d20d31abf0d05c2735efd2d09afe4/quoter.go#L46
|
||||
|
|
|
@ -80,7 +80,7 @@ func (m *middleware) Authorize(w http.ResponseWriter, r *http.Request, next http
|
|||
if len(rc.OrgID) == 0 {
|
||||
dom := organization.GetRequestSubdomain(r)
|
||||
dom = m.Store.Organization.CheckDomain(rc, dom)
|
||||
org, err = m.Store.Organization.GetOrganizationByDomain(rc, dom)
|
||||
org, err = m.Store.Organization.GetOrganizationByDomain(dom)
|
||||
} else {
|
||||
org, err = m.Store.Organization.GetOrganization(rc, rc.OrgID)
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ func RegisterEndpoints(rt *env.Runtime, s *domain.Store) {
|
|||
meta := meta.Handler{Runtime: rt, Store: s}
|
||||
user := user.Handler{Runtime: rt, Store: s}
|
||||
link := link.Handler{Runtime: rt, Store: s}
|
||||
page := page.Handler{Runtime: rt, Store: s}
|
||||
page := page.Handler{Runtime: rt, Store: s, Indexer: indexer}
|
||||
space := space.Handler{Runtime: rt, Store: s}
|
||||
block := block.Handler{Runtime: rt, Store: s}
|
||||
section := section.Handler{Runtime: rt, Store: s}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue