diff --git a/vigil/actor_type_info.go b/vigil/actor_type_info.go index 819911a..5ddf7fb 100644 --- a/vigil/actor_type_info.go +++ b/vigil/actor_type_info.go @@ -55,6 +55,10 @@ func hasActorType (accept bool, actorType ActorType, actorsType []ActorType) boo if !accept { return false } + // Si no hay ningun actor explicitamente definido, actorsType es nil o vacio se entiende que implicitamente esta + if len(actorsType) == 0 { + return true + } for _,a := range actorsType { if a == actorType { return true diff --git a/vigil/condition.go b/vigil/condition.go new file mode 100644 index 0000000..7260c7a --- /dev/null +++ b/vigil/condition.go @@ -0,0 +1,36 @@ +// ------------------------------------------------------------------------ +// 🚀 Project Active8 +// 🔗 Active Thing (activething.com) git.activething.com/go +// +// File name condition.go +// ✍️ Created by DEV +// 📅 Modified 12/12/2024 +// +// 🔒 Copyright 2024 activething.com +// +// 📜 LICENSE -------------------------------------------------------------- +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ------------------------------------------------------------------------ + +package vigil + + + +type ( + + Condition interface { + Evaluate (actorID ActorID, session Session) bool + } +) + + diff --git a/vigil/condition_type.go b/vigil/condition_type.go new file mode 100644 index 0000000..64a9115 --- /dev/null +++ b/vigil/condition_type.go @@ -0,0 +1,35 @@ +// ------------------------------------------------------------------------ +// 🚀 Project Active8 +// 🔗 Active Thing (activething.com) git.activething.com/go +// +// File name condition_type.go +// ✍️ Created by DEV +// 📅 Modified 12/12/2024 +// +// 🔒 Copyright 2024 activething.com +// +// 📜 LICENSE -------------------------------------------------------------- +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ------------------------------------------------------------------------ + +package vigil + + +const ( + ConditionTypeGrantable ConditionType = iota + ConditionTypeDeniable +) + + +type ConditionType uint8 + diff --git a/vigil/credential.go b/vigil/credential.go index ae89690..760f6f6 100644 --- a/vigil/credential.go +++ b/vigil/credential.go @@ -27,11 +27,13 @@ package vigil + type ( + Credential interface { - From () ActorID - IsGranted (session Session) bool + } +) + -) \ No newline at end of file diff --git a/vigil/credentials.go b/vigil/credentials.go index 7424684..92d7053 100644 --- a/vigil/credentials.go +++ b/vigil/credentials.go @@ -28,11 +28,7 @@ package vigil type ( - Credentials struct { - For ActorID - List []Credential - } - + Credentials []Condition ) diff --git a/vigil/session.go b/vigil/session.go index 776730d..498895a 100644 --- a/vigil/session.go +++ b/vigil/session.go @@ -24,12 +24,28 @@ package vigil +import ( + "sync" + "time" +) type ( - Session struct { + Session struct { + mutex sync.RWMutex + started time.Time + SessionID uint64 + vars map[string]any } -) \ No newline at end of file +) + + + + +func (s *Session) GetDate () time.Time { + return time.Now() +} +