MCPcopy Create free account
hub / github.com/aiscriptdev/aiscript / claims_to_object

Function claims_to_object

aiscript-vm/src/stdlib/auth/jwt.rs:114–168  ·  view source on GitHub ↗
(ctx: Context, claims: Claims)

Source from the content-addressed store, hash-verified

112}
113
114fn claims_to_object(ctx: Context, claims: Claims) -> Value {
115 let mut obj = Object::default();
116
117 // Add standard claims
118 if let Some(iss) = claims.iss {
119 obj.fields.insert(
120 ctx.intern(b"iss"),
121 Value::String(ctx.intern(iss.as_bytes())),
122 );
123 }
124 if let Some(sub) = claims.sub {
125 obj.fields.insert(
126 ctx.intern(b"sub"),
127 Value::String(ctx.intern(sub.as_bytes())),
128 );
129 }
130 if let Some(aud) = claims.aud {
131 obj.fields.insert(
132 ctx.intern(b"aud"),
133 Value::String(ctx.intern(aud.as_bytes())),
134 );
135 }
136 if let Some(exp) = claims.exp {
137 obj.fields
138 .insert(ctx.intern(b"exp"), Value::Number(exp as f64));
139 }
140 if let Some(nbf) = claims.nbf {
141 obj.fields
142 .insert(ctx.intern(b"nbf"), Value::Number(nbf as f64));
143 }
144 if let Some(iat) = claims.iat {
145 obj.fields
146 .insert(ctx.intern(b"iat"), Value::Number(iat as f64));
147 }
148 if let Some(jti) = claims.jti {
149 obj.fields.insert(
150 ctx.intern(b"jti"),
151 Value::String(ctx.intern(jti.as_bytes())),
152 );
153 }
154
155 // Add custom claims
156 for (key, value) in claims.extra {
157 let value = match value {
158 serde_json::Value::String(s) => Value::String(ctx.intern(s.as_bytes())),
159 serde_json::Value::Number(n) => Value::Number(n.as_f64().unwrap_or(0.0)),
160 serde_json::Value::Bool(b) => Value::Boolean(b),
161 serde_json::Value::Null => Value::Nil,
162 _ => continue, // Skip unsupported types
163 };
164 obj.fields.insert(ctx.intern(key.as_bytes()), value);
165 }
166
167 Value::Object(Gc::new(&ctx, RefLock::new(obj)))
168}
169
170fn jwt_encode<'gc>(state: &mut State<'gc>, args: Vec<Value<'gc>>) -> Result<Value<'gc>, VmError> {
171 if args.len() != 3 {

Callers 1

jwt_decodeFunction · 0.85

Calls 3

ObjectClass · 0.85
as_bytesMethod · 0.80
internMethod · 0.45

Tested by

no test coverage detected