potree_auth/project/domain/
authorization.rs1use super::Project;
4use crate::authorization::domain::resource::Resource;
5use crate::authorization::domain::resource::ResourceIdentifier;
6use crate::authorization::domain::resource::ResourceInstance;
7use crate::authorization::domain::resource::ResourceType;
8use crate::common::domain::Group;
9use crate::common::domain::resource_type;
10use crate::user::domain::EmailAddress;
11
12impl Resource for Project {
13 fn resource_type(&self) -> crate::authorization::domain::resource::ResourceType {
14 ResourceType::new(resource_type::PROJECT.to_owned())
15 }
16}
17
18impl ResourceInstance for Project {
19 fn resource_identifier(&self) -> crate::authorization::domain::resource::ResourceIdentifier {
20 ResourceIdentifier::new(self.id.to_string())
21 }
22
23 fn groups(&self) -> Option<Vec<Group>> {
24 Some(self.groups.clone())
25 }
26
27 fn user_emails(&self) -> Option<Vec<EmailAddress>> {
28 None
29 }
30}
31
32#[derive(Debug)]
34pub struct ProjectTypeResource;
35
36impl Resource for ProjectTypeResource {
37 fn resource_type(&self) -> crate::authorization::domain::resource::ResourceType {
38 ResourceType::new(resource_type::PROJECT.to_owned())
39 }
40}