1
0
Fork 0
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:
Harvey Kandola 2017-08-02 15:58:39 +01:00
parent 562872a4a8
commit ecc94f31c9
12 changed files with 52 additions and 45 deletions

View file

@ -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)
}

View file

@ -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

View file

@ -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
}

View file

@ -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
}

View file

@ -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)

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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)
}

View file

@ -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}